제출 #38772

#제출 시각아이디문제언어결과실행 시간메모리
38772oTTo_22Gap (APIO16_gap)C++14
47.18 / 100
96 ms5140 KiB
#include <bits/stdc++.h> #include "gap.h" #define se second #define fi first using namespace std; long long ans; long double bb; void func (long long L,long long R) { long long mi1,ma1,mi2,ma2; long long mid=(L+R)/2; MinMax(L,mid,&mi1,&ma1); MinMax(mid,R,&mi2,&ma2); if (ma1==-1 && mi2==-1) { ans=max(ans,R-L); return; } if (ma1==-1) { ans=max(ans,mi2-L); return; } if (mi2==-1) { ans=max(ans,R-ma1); return; } if (ma1==L && mi2==R){ ans=max(ans,R-L); return; } if (R-L==1){ ans=max(ans,R-L); return; } if (ma1-L>ans && ma1-L>=bb) func(L,ma1); if (R-mi2>ans && R-mi2>=bb) func(mi2,R); if (mi2-ma1>ans && mi2-ma1>=bb) func (ma1,mi2); } long long findGap(int T, int N) { long long m=(long long)N; long long Mn,Mx; long long S=0; long long TT=1000000000000000000; MinMax(S,TT,&Mn,&Mx); if (m==2) return Mx-Mn; bb=((Mx-Mn)*1.0)/((m-1)*1.0); ans=0; if (T==2) { func (Mn,Mx); return ans; } else { for (int i=1;i<(N+1)/2;i++){ long long mmn, mmx; MinMax(Mn+1,Mx-1,&mmn,&mmx); ans=max(ans,mmn-Mn); ans=max(ans,Mx-mmx); Mn=mmn; Mx=mmx; } ans=max(ans,Mx-Mn); return ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...