제출 #142971

#제출 시각아이디문제언어결과실행 시간메모리
142971shayan_pGap (APIO16_gap)C++14
100 / 100
75 ms4068 KiB
// only miss the sun when it starts to snow #include<bits/stdc++.h> #include "gap.h" #define F first #define S second #define PB push_back #define sz(s) int((s).size()) #define bit(n,k) (((n)>>(k))&1) using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll inf=1e18; vector<ll> v1, v2, vec; ll findGap(int t,int n){ ll ans=-1; if(t==1){ ll l=0, r=inf; while(sz(v1) + sz(v2) < n){ ll f,s; MinMax(l,r,&f,&s); v1.PB(f), v2.PB(s); l=f+1, r=s-1; } vec=v1; reverse(v2.begin(), v2.end()); for(ll x:v2) vec.PB(x); } else{ ll l,r; MinMax(0,inf,&l,&r); ll X=r-l, Y=X/(n-1); ans= (X+(n-2)) / (n-1); for(int i=0;i<n;i++){ v1.PB(l + Y*i); } int cnt=r-v1.back(); for(int i=n-1;i>=0;i--){ v1[i]+=cnt; if(cnt>0) cnt--; } for(int i=0;i<sz(v1);i++){ v1[i]++; } v1[0]--; for(int i=1;i<n;i++){ ll a,b; MinMax(v1[i-1],v1[i]-1,&a,&b); if(a!=-1) vec.PB(a), vec.PB(b); } } for(int i=1;i<sz(vec);i++){ ans=max(ans, vec[i] - vec[i-1]); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...