Submission #1113719

#TimeUsernameProblemLanguageResultExecution timeMemory
1113719simona1230Gap (APIO16_gap)C++17
0 / 100
3086 ms3032 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; /*int nn; long long a[200001]; void MinMax(long long l,long long r,long long *mn,long long *mx) { *mn=-1; for(int i=1;i<=nn;i++) if(a[i]>=l) { *mn=a[i]; break; } *mx=-1; for(int i=nn;i>=1;i--) if(a[i]<=r) { *mx=a[i]; break; } }*/ long long n; long long solve(long long l,long long r) { if(l==-1||l>r||l==r)return 0; //cout<<l<<" "<<r<<" "<<ll<<" "<<rr<<endl; long long ans=0; long long len=r-l+1; long long b=max(1LL*1,len/n); long long last=-1; for(long long i=l;i<=r;i+=b) { long long j=min(i+b-1,r); long long mn=0,mx=0; //cout<<i<<" "<<j<<endl; MinMax(i,j,&mn,&mx); if(mn==-1)continue; if(last!=-1)ans=max(ans,mn-last); last=mx; ans=max(ans,solve(mn,mx)); } return ans; } long long findGap(int t,int N) { n=N; return solve(0,1e18); } /*int main() { long long d=0; int x; cin>>x>>nn; for(int i=1;i<=nn;i++) { cin>>a[i]; if(i!=1)d=max(d,a[i]-a[i-1]); } long long answer=findGap(1,nn); cout<<d<<" "<<answer<<endl; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...