Submission #1260291

#TimeUsernameProblemLanguageResultExecution timeMemory
1260291Zbyszek99Gap (APIO16_gap)C++20
72.60 / 100
39 ms2352 KiB
#include "gap.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define ld long double #define ull unsigned long long #define ff first #define ss second #define pii pair<int,int> #define pll pair<long long, long long> #define vi vector<int> #define vl vector<long long> #define pb push_back #define rep(i, b) for(int i = 0; i < (b); ++i) #define rep2(i,a,b) for(int i = a; i <= (b); ++i) #define rep3(i,a,b,c) for(int i = a; i <= (b); i+=c) #define count_bits(x) __builtin_popcountll((x)) #define all(x) (x).begin(),(x).end() #define siz(x) (int)(x).size() #define forall(it,x) for(auto& it:(x)) using namespace __gnu_pbds; using namespace std; typedef tree<int, null_type, less<int>, rb_tree_tag,tree_order_statistics_node_update> ordered_set; //mt19937 mt;void random_start(){mt.seed(chrono::time_point_cast<chrono::milliseconds>(chrono::high_resolution_clock::now()).time_since_epoch().count());} //ll los(ll a, ll b) {return a + (mt() % (b-a+1));} const int INF = 1e9+50; const ll INF_L = 1e18+40; const ll MOD = 1e9+7; ll findGap(int T, int n) { cerr << T << " " << n << " T\n"; if(T == 1 || n <= 20) { vl arr; ll l = 0; ll r = 1e18; rep(i,n/2) { ll l2; ll r2; MinMax(l,r,&l2,&r2); arr.pb(l2); arr.pb(r2); l = l2+1; r = r2-1; } if(n%2 == 1) { ll xd; ll xd2; MinMax(l,r,&xd,&xd2); arr.pb(xd); } sort(all(arr)); ll ans = 0; rep(i,siz(arr)-1) ans = max(ans,arr[i+1]-arr[i]); return ans; } else { ll ans = 1; ll first; ll last; MinMax(0,1e18,&first,&last); ll cur = first; while(cur < last) { ll ans2 = ans; while(true) { ll first2; ll last2; MinMax(cur+1,cur+ans2,&first2,&last2); if(first2 == -1) { ans2 *= 2; continue; } ans = max(ans,first2-cur); cur = last2; break; } } return ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...