제출 #94063

#제출 시각아이디문제언어결과실행 시간메모리
94063KastandaGap (APIO16_gap)C++11
100 / 100
67 ms4584 KiB
#include<bits/stdc++.h> #include "gap.h" #define pb push_back using namespace std; typedef long long ll; long long findGap(int T, int N) { if (T == 1) { int l = 1, r = N; ll le = 0, ri = 1e18; ll Mn, Mx; vector < ll > A(N + 1); while (l <= r) { MinMax(le, ri, &Mn, &Mx); A[l ++] = Mn; A[r --] = Mx; le = Mn + 1; ri = Mx - 1; } Mx = 0; for (int i = 1; i < N; i++) Mx = max(Mx, A[i + 1] - A[i]); return Mx; } ll Mn, Mx; ll le = 0, ri = 1e18; MinMax(le, ri, &Mn, &Mx); if (Mx - Mn <= N - 1) return 1LL; ll len = (Mx - Mn - 1) / (N - 1); ll cnt = (Mx - Mn - 1) % (N - 1); le = Mn + 1; ll last = Mx; vector < ll > A = {Mn}; for (int i = 1; i <= N - 1; i++) { ri = le + len - 1; if (i <= cnt) ri ++; MinMax(le, ri, &Mn, &Mx); le = ri + 1; if (Mn == -1) continue; A.pb(Mn); A.pb(Mx); } A.pb(last); Mx = 0; for (int i = 1; i < (int)A.size(); i += 2) Mx = max(Mx, A[i] - A[i - 1]); return Mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...