제출 #1073500

#제출 시각아이디문제언어결과실행 시간메모리
1073500Hugo1729Gap (APIO16_gap)C++11
100 / 100
32 ms4340 KiB
#include "gap.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll solve1(int N){ ll s=0,t=1e18,ml=0,mr; vector<ll> ans,sus2; for(int i=0;i<N;i+=2){ MinMax(s,t,&ml,&mr); if(mr==-1)break; ans.push_back(ml); if(ml==mr)break; sus2.push_back(mr); s=ml+1; t=mr-1; } for(int j=sus2.size()-1;j>=0;j--){ ans.push_back(sus2[j]); } ll out=0; for(int i=0;i<N;i++){ out=max(out,ans[i+1]-ans[i]); } // for(int i : ans)cout << i << ' '; // cout << '\n'; return out; } ll solve2(int N){ ll ml,mr; MinMax(0,1e18,&ml,&mr); ll lo=ml,hi=mr; ll L=hi-lo; ll sus=(L+N-2)/(N-1); ll ans = sus; ll prev=lo; for(ll i=ml+1;i<hi;i+=sus){ sus=ans; MinMax(i,min(i+sus,hi-1),&ml,&mr); if(ml==-1)continue; ans=max(ans,ml-prev); prev=mr; } return max(ans,hi-prev); } ll findGap(int T, int N){ if(T==1)return solve1(N); else return solve2(N); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...