Submission #1218060

#TimeUsernameProblemLanguageResultExecution timeMemory
1218060lukasuliashviliGlobal Warming (CEOI18_glo)C++20
100 / 100
78 ms6472 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define first fs #define sc second #define pb push_back #define int long long #define rep(i,a,b) for(int i=a; i<=b; i++) const int N=1e6+5; int ans,suf[N],pref[N],dppr[N],dpsuf[N],a[N]; signed main(){ int n,x; cin>>n>>x;rep(i,1,n){cin>>a[i];dppr[i]=1e18;dpsuf[i]=1e18;} rep(i,1,n){ int idx=lower_bound(dppr+1,dppr+n+1,a[i]-x)-dppr; dppr[idx]=a[i]-x; pref[i]=idx; ans=max(ans,idx); } reverse(a+1,a+n+1); rep(i,1,n){ int idx2=lower_bound(dpsuf+1,dpsuf+n+1,-(a[i]-x))-dpsuf; ans=max(ans,pref[n-i+1]+idx2-1); int idx=lower_bound(dpsuf+1,dpsuf+n+1,-a[i])-dpsuf; dpsuf[idx]=-a[i]; } cout<<ans<<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...