Submission #501456

#TimeUsernameProblemLanguageResultExecution timeMemory
501456StickfishGap (APIO16_gap)C++17
30 / 100
47 ms2644 KiB
#include "gap.h" #include <vector> #include <algorithm> using ll = long long; using namespace std; const ll INF = 1.77013e18; ll find_recur(ll mn, ll mx) { if (mx - mn == 1) { return 1; } if (mx - mn == 2) { ll nmn, nmx; MinMax(mn + 1, mx - 1, &nmn, &nmx); if (nmn == -1) return 2; return 1; } ll md = (mn + mx) / 2; ll lmn, lmx; MinMax(mn + 1, md, &lmn, &lmx); ll rmn, rmx; MinMax(md + 1, mx - 1, &rmn, &rmx); if (lmn == -1 && rmn == -1) { return mx - mn; } if (lmn == -1) { return rmn - mn; } if (rmn == -1) { return mx - lmx; } return max(find_recur(lmn, lmx), find_recur(rmn, rmx)); } ll findGap(int T, int N) { if (T == 1) { vector<ll> mn; vector<ll> mx; while (mn.size() + mx.size() < N) { ll nmn, nmx; if (mn.empty()) { MinMax(1ll, INF, &nmn, &nmx); } else { MinMax(mn.back() + 1, mx.back() - 1, &nmn, &nmx); } mn.push_back(nmn); if (nmn != nmx) mx.push_back(nmx); } reverse(mx.begin(), mx.end()); for (auto x : mx) { mn.push_back(x); } ll ans = 0; for (int i = 0; i + 1 < N; ++i) { ans = max(ans, mn[i + 1] - mn[i]); } return ans; } else { ll mn, mx; MinMax(1ll, INF, &mn, &mx); return find_recur(mn, mx); } return 0; }

Compilation message (stderr)

gap.cpp: In function 'll findGap(int, int)':
gap.cpp:41:38: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   41 |         while (mn.size() + mx.size() < N) {
      |                ~~~~~~~~~~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...