제출 #735854

#제출 시각아이디문제언어결과실행 시간메모리
735854Abrar_Al_SamitGap (APIO16_gap)C++17
38.81 / 100
47 ms1972 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; const long long INF = 1e18; long long findGap(int T, int N) { long long a[N+1]; if(T==1) { int l = 1, r = N; long long lef = 0, rit = INF; while(l<=r) { MinMax(lef, rit, &lef, &rit); if(l==r) { a[l] = lef; break; } else { a[l] = lef, a[r] = rit; ++lef, --rit; ++l, --r; } } long long best = 0; for(int i=2; i<=N; ++i) { best = max(best, a[i] - a[i-1]); } return best; } else { long long lef = 0; long long already = 1; bool fin = 0; bool very_first = true; // long long absmn, absmx; // MinMax(0, INF, &absmn, &absmx); while(lef+already+1<=INF) { long long pw = already; bool fir = true; while(1) { long long rit = min(INF, pw+lef-1); long long var1, var2; MinMax(lef, rit, &var1, &var2); if(var1==-1) { if(rit==INF) { fin = true; break; } pw *= 2; } else { if(fir) { lef = var2 + 1; already = max(already, 1LL); } else { if(!very_first) already = var1 - lef + 1, lef = var2 + 1; else lef = var1 + 1; } break; } fir = false; } very_first = false; if(fin) break; } return already; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...