Submission #161642

#TimeUsernameProblemLanguageResultExecution timeMemory
161642kostia244Gap (APIO16_gap)C++14
30 / 100
60 ms2288 KiB
#include "gap.h" #include<bits/stdc++.h> #define pb push_back using namespace std; using ll = long long; long long naive(int N) { long long l = 0, r = 1e18, lp = 0, rp = N-1, x=0, y=0, a[100100]; for(int i = 0; lp<=rp; i++) { MinMax(l, r, &x, &y); a[lp] = x, a[rp] = y; l=x+1, r=y-1; lp++,rp--; } ll ans = 0; for(int i = 1; i < N; i++) { ans = max(ans, a[i]-a[i-1]); } return ans; } long long findGap(int T, int N) { if(T==1) { return naive(N); } vector<ll> x; ll l = 0, r = 1e18, mn, mx, tl, tr, inc = 0; MinMax(l, r, &mn, &mx); ll step = (mx - mn + N - 1) / N; ll omx = mx; x.pb(mn); mx -= 1; mn += 1; l = mn, r = mn+step; ll ans = step; while (true) { MinMax(l, r, &tl, &tr); if (tl != -1) { x.pb(tl); x.pb(tr); N--; } if(tl!=-1) for (int i = max(1, (int)x.size()-3); i < x.size(); i++) { if(ans < x[i] - x[i - 1]) { ans = x[i] - x[i - 1]; } } if(N) step = (mx - mn + N - 1) / N; if(mx-tr<=ans) break; if (r == mx) break; ans = max(ans, step); l = r+1; r = l+ans+1; r = min(r, mx); } x.pb(omx); for (int i =1; i < x.size(); i++) { if(ans < x[i] - x[i - 1]) { ans = x[i] - x[i - 1]; } } return ans; }

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:43:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = max(1, (int)x.size()-3); i < x.size(); i++) {
                                         ~~^~~~~~~~~~
gap.cpp:59:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i =1; i < x.size(); i++) {
                 ~~^~~~~~~~~~
gap.cpp:26:38: warning: unused variable 'inc' [-Wunused-variable]
  ll l = 0, r = 1e18, mn, mx, tl, tr, inc = 0;
                                      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...