Submission #713204

#TimeUsernameProblemLanguageResultExecution timeMemory
713204lamGap (APIO16_gap)C++14
100 / 100
68 ms1864 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; #define ll long long const int maxn = 1e5 + 10; int n; ll a[maxn]; ll sub1() { int l=1; int r=n; ll s = 0; ll t = 1e18; while (l<=r) { ll *mx, *mn; ll mmax, mmin; mx = &mmax; mn = &mmin; // cerr<<l<<' '<<r<<' '<<s<<' '<<t<<endl; MinMax(s,t,mn,mx); s = (mmin)+1; t = (mmax)-1; a[l++]=mmin; a[r--]=mmax; } ll ans = 0; for (int i=2; i<=n; i++) { if (ans<a[i]-a[i-1]) ans=a[i]-a[i-1]; } return ans; } set<ll> b; ll sub2() { ll s, t, mmin, mmax; ll *mn, *mx; mn = &mmin; mx = &mmax; s=0; t=1e18; MinMax(s,t,mn,mx); ll l,r; l=mmin; r=mmax; ll L = mmax - mmin; ll dist = L / (n-1); ll ans = dist; ll last = l; ll last_max = -1; // cerr<<dist<<endl; for (int i=1; i<n; i++) { ll next = min(r, last + dist); s = last; t = next; MinMax(s,t,mn,mx); if (mmin != -1) { // cerr<<last_max<<' '<<mmin<<' '<<mmax<<endl; if (last_max != -1) ans = max(ans, mmin - last_max); last_max = mmax; } last = next+1; if (last > r) break; } return ans; } ll findGap(int T, int N) { n=N; // cerr<<":>"<<endl; if (T==1) return sub1(); else return sub2(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...