Submission #614105

#TimeUsernameProblemLanguageResultExecution timeMemory
614105nohaxjustsofloGap (APIO16_gap)C++17
30 / 100
61 ms1864 KiB
#include <bits/stdc++.h> #include <iostream> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<ll,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> order_set; mt19937 mt_rand(chrono::high_resolution_clock::now().time_since_epoch().count()); //uniform_int_distribution<int> gen; ///(min, max) //int random() {return gen(mt_rand);} const int mxN=1e5+5; const int mod=998244353; const int mxlogN=40; const int mxK=26; const ll inf=1e18; const int K=600; void MinMax(ll s, ll t, ll *mn, ll *mx); ll a[mxN]; ll findGap(int t, int n) { if(t==1) { ll mn=0,mx=inf; for(int l=0, r=n-1; l<=r; l++, r--) { MinMax(mn,mx,&a[l],&a[r]); mn=a[l]+1; mx=a[r]-1; } ll ans=0; for(int i=1; i<n; i++) ans=max(ans,a[i]-a[i-1]); return ans; } ll mn,mx; MinMax(0,inf,&mn,&mx); ll gap=(mx-mn+n-1-1)/(n-1); ll ans=gap; ll x=mn,y=mn; while(x<mx) { ll mn2, mx2; MinMax(x+1,min(inf,y+gap),&mn2,&mx2); if(mn2==-1) y+=gap; else { if(mn2==mx2) ans=max(ans,mx2-x); x=y=mx2; } } return ans; } /* int main() { }*/ /* 7 3 4 1 3 4 0 2 3 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...