Submission #955124

#TimeUsernameProblemLanguageResultExecution timeMemory
955124LudisseyGlobal Warming (CEOI18_glo)C++14
100 / 100
45 ms8152 KiB
#include <bits/stdc++.h> #define int long long #define sz(a) (int)a.size() using namespace std; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,x; cin >> n >> x; vector<int> t(n); for (int i = 0; i < n; i++) cin >> t[i]; vector<int> pref(n,0); vector<int> suff(n,0); vector<int> lis; lis.push_back(t[0]); pref[0]=1; for (int i = 1; i < n; i++) { if(t[i]+x>lis.back()) pref[i]=sz(lis)+1; else{ int p=(lower_bound(lis.begin(), lis.end(), t[i]+x))-lis.begin(); pref[i]=p+1; } if(t[i]>lis.back()) { lis.push_back(t[i]); }else{ int p=(lower_bound(lis.begin(), lis.end(), t[i]))-lis.begin(); lis[p]=t[i]; } } lis.clear(); lis.push_back(-t[n-1]); suff[n-1]=1; for (int i = n-2; i >= 0; i--) { if(-t[i]>lis.back()) { lis.push_back(-t[i]); suff[i]=sz(lis); }else{ int p=(lower_bound(lis.begin(), lis.end(), -t[i]))-lis.begin(); lis[p]=-t[i]; suff[i]=p+1; } } int mx=max(pref[n-1],suff[0]); for (int i = 1; i < n; i++) mx=max(mx,pref[i]+suff[i]-1); cout << mx << "\n"; return 0; }
#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...