제출 #1277752

#제출 시각아이디문제언어결과실행 시간메모리
1277752quanduongxuan12Gap (APIO16_gap)C++20
70 / 100
40 ms3228 KiB
#include "gap.h" #include <bits/stdc++.h> using namespace std; #define name "gap" #define MAXN 100005 #define pb push_back #define pf push_front #define ll long long #define ii pair<int, int> #define fs first #define sc second #define ill pair<int, ll> #define lli pair<ll, int> #define llll pair<ll, ll> #define all(v) v.begin(),v.end() #define uni(v) v.erase(unique(all(v)),v.end()) #define bit(n,i) (((n)>>(i))&1) #define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++) #define FORD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--) #define MASK(i) (1LL<<(i)) const ll INF=1e18; const int MOD=1e9+7; void add(int &u, int v){ u+=v; if (u>=MOD) u-=MOD; } void sub(int &u, int v){ u-=v; if (u<0) u+=MOD; } void minimize(int &u, int v){ u=min(u,v); } void maximize(ll &u, ll v){ u=max(u,v); } long long Rand(long long l, long long r){ ll tmp=0; FOR(i,1,4) tmp=((tmp<<15)^(((1<<15)-1)&rand())); return l+tmp%(r-l+1); } int n; ll a[MAXN]; ll findGap(int T, int N){ n=N; if (T==1){ ll kq=0; vector<ll> vec; ll l=0,r=INF; while (l<=r){ MinMax(l,r,&l,&r); if (l==-1) break; vec.pb(l); if (r!=l) vec.pb(r); ++l; --r; } sort(all(vec)); FOR(i,0,n-2){ maximize(kq,vec[i+1]-vec[i]); } return kq; } ll l=0,r=INF; MinMax(l,r,&l,&r); if (n==2) return r-l; ll d=(r-l-1)%(n-2)==0?(r-l-1)/(n-2):(r-l-1)/(n-2)+1; ll res=0; ll u,v; ll x=l+1; FOR(i,1,n-2){ MinMax(x,x+d-1,&u,&v); maximize(res,u-l); l=max(l,v); x+=d; } maximize(res,r-l); return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...