제출 #708601

#제출 시각아이디문제언어결과실행 시간메모리
708601ntdxl05Gap (APIO16_gap)C++14
70 / 100
63 ms4364 KiB
#include <bits/stdc++.h> using namespace std; #include "gap.h" const long long inf = 1e18; template<class U, class V> bool maxz(U &a, V b) { if (a < b) return a = b, 1; return 0; } long long findGap(int T, int N) { long long x, y; MinMax(0, inf, &x, &y); long long z = (y - x - 1) / (N - 1), t = (y - x - 1) % (N - 1); vector<pair<long long, long long>> vv{pair<long long, long long>{0, x}}; long long l = x + 1; for (int i = 0; i < N - 1; i++) { long long r = l + z + (i < t); vv.push_back({l, r - 1}); // cerr << l << " " << r - 1 << "\n"; l = r; } vv.push_back({y, inf}); int m = vv.size(); vector<pair<long long, long long>> h(m, {-1, -1}); h[0] = {-1, x}; h[m - 1] = {y, -1}; long long res = 0; for (int i = 1; i + 1 < m; i++) { if (vv[i].first <= vv[i].second) { MinMax(vv[i].first, vv[i].second, &x, &y); h[i] = {x, y}; } } for (int l = 1, r = 1; l + 1 < m; l = r) { for (; r + 1 < m && h[r] == h[l]; r++); if (h[l].first == -1) { long long gap = h[r].first - h[l - 1].second; maxz(res, gap); } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...