Submission #114060

#TimeUsernameProblemLanguageResultExecution timeMemory
114060keko37Gap (APIO16_gap)C++14
100 / 100
89 ms3728 KiB
#include<bits/stdc++.h> #include "gap.h" using namespace std; typedef long long llint; const llint INF = 1000000000000000007LL; /*const int MAXN = 100005; int nn, gmn, gmx, cnt; llint a[MAXN]; void MinMax (llint s, llint t) { cnt++; cout << "bla " << s << " " << t << endl; llint x = INF, y = 0; for (int i = 0; i<nn; i++) { if (s <= a[i] && a[i] <= t) { cnt++; x = min(x, a[i]); y = max(y, a[i]); } } gmn = x; gmx = y; }*/ long long findGap (int t, int n) { if (t == 1) { llint mn = -1, mx = INF + 1; vector <llint> v; while (v.size() < n) { //MinMax(mn + 1, mx - 1); mn = gmn; mx = gmx; MinMax(mn + 1, mx - 1, &mn, &mx); v.push_back(mn); if (mx != mn) v.push_back(mx); if (mx == mn) break; } sort(v.begin(), v.end()); llint sol = 0; for (int i = 0; i < n-1; i++) { sol = max(sol, v[i+1] - v[i]); } return sol; } else { llint mn, mx, sol = 0; //MinMax(0, INF); mn = gmn; mx = gmx; MinMax(0, INF, &mn, &mx); llint d = mx - mn; llint len = d / (n-1); llint prosli = mn; llint a = mn + 1, b = min(a + len, mx - 1); while (a < mx) { llint currmn, currmx; //MinMax(a, b); currmn = gmn; currmx = gmx; MinMax(a, b, &currmn, &currmx); if (currmn != -1) { llint val = currmn - prosli; sol = max(sol, val); prosli = currmx; } a = b + 1; b = min(a + len, mx - 1); } sol = max(sol, mx - prosli); return sol; } } /*int main () { cin >> nn; for (int i = 0; i<nn; i++) { cin >> a[i]; } cout << findGap(2, nn) << endl; cout << cnt; return 0; } */

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:34:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (v.size() < n) {
                ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...