Submission #1008131

#TimeUsernameProblemLanguageResultExecution timeMemory
1008131vjudge1Global Warming (CEOI18_glo)C++17
100 / 100
656 ms56656 KiB
/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <bits/stdc++.h> using namespace std; #define int long long const int N=(1<<(int)log2(1000000)+1); int Tree[N*3+1],ans[200001],ans2[200001],arr[200001]; int l,r; map <int,int> mp; int find(int l1,int r1,int i){ if(l1>r||r1<l) return 0; if(l1>=l&&r1<=r) return Tree[i]; int mid=(l1+r1)/2; return max(find(l1,mid,i*2),find(mid+1,r1,i*2+1)); } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,x; cin>>n>>x; for(int i=0;i<n;i++){ cin>>arr[i]; mp[arr[i]]++; mp[arr[i]+x]++; } int k=1; for(auto [i,j]:mp){ mp[i]=k; k++; } for(int i=n-1;i>=0;i--){ l=mp[arr[i]]+1,r=k; ans[i]=find(0,N-1,1)+1; int indx=mp[arr[i]]+N; Tree[indx]=ans[i]; indx/=2; while(indx!=0){ Tree[indx]=max(Tree[indx*2],Tree[indx*2+1]); indx/=2; } } memset(Tree,0,sizeof Tree); for(int i=0;i<n;i++){ l=1,r=mp[arr[i]+x]-1; ans2[i]=find(0,N-1,1)+1; l=1,r=mp[arr[i]]-1; int num=find(0,N-1,1)+1; int indx=mp[arr[i]]+N; Tree[indx]=num; indx/=2; while(indx!=0){ Tree[indx]=max(Tree[indx*2],Tree[indx*2+1]); indx/=2; } } // for(int i=0;i<n;i++) cout<<ans[i]<<" "; // cout<<endl; // for(int i=0;i<n;i++) cout<<ans2[i]<<" "; int mx=0; for(int i=0;i<n;i++) mx=max(mx,ans[i]+ans2[i]-1); cout<<mx<<endl; return 0; }

Compilation message (stderr)

glo.cpp:12:35: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   12 | const int N=(1<<(int)log2(1000000)+1);
      |                 ~~~~~~~~~~~~~~~~~~^~
#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...