Submission #1218529

#TimeUsernameProblemLanguageResultExecution timeMemory
1218529gvancakGlobal Warming (CEOI18_glo)C++20
100 / 100
41 ms6796 KiB
#include <bits/stdc++.h> #define f first #define s second #define pb push_back #define mp make_pair #define ll long long using namespace std; ll mod=1e9+7; ll a[1000005],p[1000005],l,r,x,y,z,ans,t,n,q,mx,mn,k,d,dp[1000005],dp1[1000005],ind; map <ll,ll> m; bool ok,okk; string s1; set <ll> s; int main(){ ios_base::sync_with_stdio(false); cin.tie(0),cout.tie(0); t=1; //cin>>t; while (t--){ cin>>n>>d; for (int i=1; i<=n; i++){ cin>>a[i]; dp[i]=1e9; dp1[i]=1e9; } ans=0; for (int i=1; i<=n; i++){ ind=lower_bound(dp+1,dp+n+1,a[i]-d)-dp; dp[ind]=a[i]-d; p[i]=ind; ans=max(ans,ind); } for (int i=1; i<=n/2; i++) swap(a[i],a[n-i+1]); for (int i=1; i<=n; i++){ ind=lower_bound(dp1+1,dp1+n+1,d-a[i])-dp1; ans=max(ans,p[n-i+1]+ind-1); ind=lower_bound(dp1+1,dp1+n+1,-a[i])-dp1; dp1[ind]=-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...