Submission #1152278

#TimeUsernameProblemLanguageResultExecution timeMemory
1152278zhasynGap (APIO16_gap)C++20
30 / 100
35 ms5052 KiB
#include "gap.h" #include <bits/stdc++.h> #define pb push_back #define pf push_front using namespace std; #define F first #define S second typedef long long ll; #define pii pair <int, int> #define pll pair <ll, ll> typedef long double ld; const ll N = 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18; const ll mod = 1e9 + 7; // void MinMax(ll l, ll r, ll &mn, ll &mx){ // cout << l <<" " << r << endl; // cin >> mn >> mx; // } vector <ll> vec; int nx; void calc(ll l, ll r){ ll mn, mx; MinMax(l, r, &mn, &mx); if(mn == -1) return; if(mn == mx){ vec.pb(mn); return; } vec.pb(mn); vec.pb(mx); l = mn + 1; r = mx - 1; if((ll)vec.size() == nx) return; calc(l, r); } long long findGap(int t, int n) { nx = n; ll ans = 1; if(t == 1){ calc(0, 1e18); sort(vec.begin(), vec.end()); for(ll i = 0; i < (ll)vec.size() - 1; i++){ ans = max(ans, vec[i + 1] - vec[i]); } } else{ ll mn, mx, gr = (n - 1) / 2, prev, k, l = 0, r = 1e18; MinMax(l, r, &mn, &mx); prev= mn; l = mn + 1; r = mx - 1; k = (r - l + gr) / gr; for(ll cur = l; cur <= r; cur = cur + k){ ll mnx, mxx; MinMax(cur, min(cur + k - 1, r), &mnx, &mxx); if(mnx != -1){ ans = max(ans, mnx - prev); ans = max(ans, mxx - mnx); prev = mxx; } } ans = max(ans, mx -prev); } return ans; } // int main(){ // ios::sync_with_stdio(false); // cin.tie(NULL); // ll t, n; // cin >> t >> n; // findGap(t, n); // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...