Submission #1133243

#TimeUsernameProblemLanguageResultExecution timeMemory
1133243Math4Life2020Gap (APIO16_gap)C++20
100 / 100
47 ms3260 KiB
#include "gap.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<ll,ll>; using ui = __int128; ll findGap(int T, int N) { if (T==1) { vector<ll> v1; ll x=0; ll y=1e18; ll a=-1; ll b=-1; while (x <= y && v1.size()<N) { MinMax(x,y,&a,&b); if (a==-1) { break; } if (a==b) { v1.push_back(a); break; } else { v1.push_back(a); v1.push_back(b); } x=a+1; y=b-1; } sort(v1.begin(),v1.end()); assert(v1.size()==N); ll ans = 0; for (ll i=0;i<(N-1);i++) { ans = max(ans,v1[i+1]-v1[i]); } return ans; } else { vector<ll> v1; ll x=0; ll y=1e18; ll a=-1; ll b=-1; MinMax(x,y,&a,&b); x=a;y=b; v1.push_back(x); v1.push_back(y); for (ll t=0;t<N;t++) { ll ql = x + ((ui)t*(ui)(y-x-N+1))/(ui)N + t; if (ql==x) { ql++; } ll qr = x + ((ui)(t+1)*(ui)(y-x-N+1))/(ui)N + t; if (qr==y) { qr--; } if (ql>qr) { continue; } MinMax(ql,qr,&a,&b); if (a!=-1) { v1.push_back(a); v1.push_back(b); } } sort(v1.begin(),v1.end()); ll ans = 0; for (ll i=0;i<(v1.size()-1);i++) { ans = max(ans,v1[i+1]-v1[i]); } return ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...