Submission #371488

#TimeUsernameProblemLanguageResultExecution timeMemory
371488BartolMGap (APIO16_gap)C++17
100 / 100
68 ms1388 KiB
#include "gap.h" #include <bits/stdc++.h> using namespace std; #define X first #define Y second #define mp make_pair #define pb push_back typedef long long ll; typedef pair <int, int> pii; typedef pair <int, pii> pip; typedef pair <pii, int> ppi; typedef pair <ll, ll> pll; pll query(ll a, ll b) { if (a>b) return mp(-1, -1); ll x, y; // printf("[%lld, %lld]\n", a, b); MinMax(a, b, &x, &y); return mp(x, y); } long long findGap(int T, int N) { ll sol=0; pll pp=query(0, 1e18); ll MIN=pp.X, MAX=pp.Y; if (T==1) { N-=2; while (N>=1) { pll curr=query(pp.X+1, pp.Y-1); if (curr.X==-1) break; sol=max(sol, curr.X-pp.X); sol=max(sol, pp.Y-curr.Y); pp=curr; N-=2; } sol=max(sol, pp.Y-pp.X); } else { ll d=(MAX-MIN)/(N-1); ll pr=MIN; ll l=MIN, r=MIN; while (r!=MAX) { l=r+1; r=min(l+d, MAX); pll ans=query(l, r); if (ans.X!=-1) { sol=max(sol, ans.X-pr); pr=ans.Y; } if (r==MAX && ans.X!=-1) sol=max(sol, MAX-ans.Y); } } return sol; } /* 1 8 1 5 9 18 32 46 55 63 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...