Submission #122802

#TimeUsernameProblemLanguageResultExecution timeMemory
122802tselmegkhGap (APIO16_gap)C++14
30 / 100
69 ms1912 KiB
#include<bits/stdc++.h> #include "gap.h" using namespace std; #define INF 1e9 #define MAX 200005 #define xx first #define yy second #define pb push_back #define mp make_pair #define ull long long #define FOR(i,a,b) for(int i=a;i<=b;i++) #define nl '\n' #define zai <<' '<< #define all(a) a.begin(),a.end() #define pc __builtin_popcount #define debug(args...) cerr << #args << " = "; Dbg,args; cerr << nl; struct Dbg { template<typename T> Dbg& operator,(const T& v) { cerr << v << ", "; return *this; } } Dbg; template <typename T> ostream& operator<<(ostream& _o_, const vector<T>& _v_){ if(!_v_.empty()){_o_<<'[';copy(_v_.begin(),_v_.end(),ostream_iterator<T>(_o_,", "));_o_<<"\b\b]";}return _o_;} typedef vector<int> vi; typedef pair<int,int> ii; typedef vector<ii> vii; template<class C> void mini(C &_a, C _b) { _a = min(_a, _b); } template<class C> void maxi(C &_a, C _b) { _a = max(_a, _b); } ull a[MAX]; ull findGap(int T,int n){ ull mn = 0, mx = 1e18; int l = 0, r = n - 1; if(T == 1){ ull f,s; while(l <= r){ MinMax(mn, mx, &f, &s); a[l] = f; a[r] = s; mn = f + 1; mx = s - 1; l++; r--; } ull ans = 0; for(int i = 1; i < n; i++){ maxi(ans, a[i] - a[i - 1]); } return ans; } else{ ull f, s; MinMax(mn, mx, &f, &s); a[0] = f; a[n - 1] = s; ull bef = a[0]; ull avdiff = (a[n - 1] - a[0]) / (n - 1); ull ans = 0; mn = a[0] + 1; while(true){ if(mn > a[n - 1]){ return ans; } ull f, s; MinMax(mn, mn + avdiff - 1, &f, &s); if(f == -1 || s == -1){ return ans; } maxi(ans, f - bef); mn += avdiff; bef = s; maxi(avdiff, ans); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...