Submission #1274380

#TimeUsernameProblemLanguageResultExecution timeMemory
1274380warrennGlobal Warming (CEOI18_glo)C++20
42 / 100
80 ms6796 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int lis(vector<int>&a){ vector<int>tmp; for(int q=0;q<a.size();q++){ int id=lower_bound(tmp.begin(),tmp.end(),a[q])-tmp.begin(); if(id==tmp.size()){ tmp.push_back(a[q]); } else{ tmp[id]=a[q]; } } return tmp.size(); } signed main(){ int n,x; cin>>n>>x; vector<int>a; for(int q=0;q<n;q++){ int x; cin>>x; a.push_back(x); } if(n<=50 && x<=50){ int ans=0; for(int val=-x;val<=x;val++){ for(int l=0;l<n;l++){ for(int r=l;r<n;r++){ a[r]+=val; ans=max(ans,lis(a)); } for(int r=l;r<n;r++){ a[r]-=val; } } } cout<<ans<<endl; } else if(x==0){ cout<<lis(a)<<endl; } else if(x==1e9){ int lis[n+1]; lis[0]=0; vector<int>tmp; for(int q=1;q<=n;q++){ int id=lower_bound(tmp.begin(),tmp.end(),a[q-1])-tmp.begin(); if(id==tmp.size()){ tmp.push_back(a[q-1]); } else{ tmp[id]=a[q-1]; } lis[q]=tmp.size(); } tmp.clear(); int lds[n+2]; lds[n+1]=0; for(int q=n;q>=1;q--){ int id=lower_bound(tmp.begin(),tmp.end(),-a[q-1])-tmp.begin(); if(id==tmp.size()){ tmp.push_back(-a[q-1]); } else{ tmp[id]=-a[q-1]; } lds[q]=tmp.size(); } int ans=0; for(int q=1;q<=n;q++){ ans=max(ans,lis[q]+lds[q+1]); } 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...