Submission #974356

#TimeUsernameProblemLanguageResultExecution timeMemory
974356KenjikrabGap (APIO16_gap)C++14
17.68 / 100
71 ms3400 KiB
#include "gap.h" #include<bits/stdc++.h> #define ll long long #define fi first #define se second using namespace std; long long findGap(int T, int N) { ll A=1e18; ll ans=0; ll mn,mx; MinMax((ll)0,A,&mn,&mx); queue<pair<ll,ll>> q; q.push({mn,mx}); while(!q.empty()) { ll l=q.front().fi,r=q.front().se; q.pop(); if(l+1==r||l==r) { ans=max(ans,r-l); continue; } ll mid=(l+r)>>1; ll mn1,mx1; MinMax(l,mid,&mn1,&mx1); ll mn2,mx2; MinMax(mid+1,r,&mn2,&mx2); if(mn1==-1&&mx1==-1&&mn2==-1&&mx2==-1)ans=max(ans,r-l); if(mx1!=-1&&mn2!=-1)ans=max(ans,mn2-mx1); if(mn1!=-1)ans=max(ans,mn1-l); else if(mn2!=-1)ans=max(ans,mn2-l); if(mx2!=-1)ans=max(ans,r-mx2); else if(mx1!=-1)ans=max(ans,r-mx1); if(mn1!=mx1&&mx1-mn1>ans)q.push({mn1,mx1}); if(mn2!=mx2&&mx2-mn2>ans)q.push({mn2,mx2}); } return (ll)ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...