Submission #1103958

#TimeUsernameProblemLanguageResultExecution timeMemory
1103958vjudge1Global Warming (CEOI18_glo)C++17
100 / 100
82 ms2788 KiB
#include <iostream> #include <algorithm> using namespace std; int arr[200001], len[200001]; int *lis; int main() { int n, x; cin >> n >> x; for (int i = 0; i < n; i++) cin >> arr[i]; lis = new int[n]; fill(lis, lis+n, __INT_MAX__); int mx = 0, l = 0; for (int i = 0; i < n; ++i) { int *j = lower_bound(lis, lis+mx, arr[i]); *j = arr[i]; len[i] = j-lis + 1; mx = max(mx, len[i]); } l = mx; fill (lis, lis+n, __INT_MAX__); for (int i = n-1; i >= 0; --i) { int* pos = lower_bound(lis, lis+l, -arr[i] + x); mx = max(mx, len[i] + int(pos-lis)); int* insert_pos = lower_bound(lis, lis+l, -arr[i]); *insert_pos = -arr[i]; } cout << mx << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...