제출 #48981

#제출 시각아이디문제언어결과실행 시간메모리
48981NamnamseoGap (APIO16_gap)C++17
100 / 100
197 ms39436 KiB
#include "gap.h" #include <algorithm> using namespace std; typedef long long ll; ll big=ll(1e18); int n; ll binwork(ll X, ll Y,int n){ ll a,b; MinMax(X, Y, &a, &b); if(n==2) return b-a; ll ans=0; n-=2; while(true){ ll c,d; MinMax(a+1, b-1, &c, &d); ans=max({ans, c-a, b-d}); if(n==1){ break; } if(n==2){ ans=max(ans, d-c); break; } n-=2; a=c; b=d; } return ans; } ll work2(){ ll x,y; MinMax(0,big,&x,&y); ll l=x+1, r=y-1; ll width = (r-l+1)/n; int i; ll li=l; ll lastp = x; ll ans=0; for(i=0; i<n; ++i){ ll p=li, q=li+width-1; if( i < (r-l+1)-width*n ) ++q; li=q+1; ll ba, bb; MinMax(p, q, &ba, &bb); if(ba!=-1){ ans=max(ans, ba-lastp); lastp=bb; } } ans=max(ans, y-lastp); return ans; } ll findGap(int T, int N) { if(T == 1){ return binwork(0, big, N); } else { if(N==2){ ll a,b; MinMax(0, big, &a, &b); return b-a; } n=N; return work2(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...