Submission #81800

#TimeUsernameProblemLanguageResultExecution timeMemory
81800xiaowuc1Gap (APIO16_gap)C++14
100 / 100
113 ms19964 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; typedef long long ll; ll onesolve(int n) { ll lhs, rhs; MinMax(0, 1000000000000000000LL, &lhs, &rhs); set<ll> all; all.insert(lhs); all.insert(rhs); n -= 2; while(n > 0) { MinMax(lhs+1, rhs-1, &lhs, &rhs); all.insert(lhs); all.insert(rhs); n -= 2; } ll ret = 0; ll lowest = *all.begin(); for(ll out: all) { ret = max(ret, out - lowest); lowest = out; } return ret; } ll twosolve(int n) { ll lhs, rhs; MinMax(0, 1000000000000000000LL, &lhs, &rhs); ll ret = (rhs-lhs+n-2)/(n-1); ll endend = rhs; // printf("initial guess %lld\n", ret); set<ll> all; all.insert(lhs); all.insert(rhs); ll last = lhs+1; while(last <= endend) { MinMax(last, last + ret, &lhs, &rhs); // printf("%lld %lld %lld %lld\n", last, last+ret, lhs, rhs); if(lhs >= 0) { all.insert(lhs); all.insert(rhs); } last += ret+1; } ll lowest = *all.begin(); for(ll out: all) { ret = max(ret, out - lowest); lowest = out; } return ret; } ll findGap(int t, int n) { if(t==1) return onesolve(n); else return twosolve(n); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...