이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include "gap.h"
using namespace std;
using ll=long long;
long long findGap(int subt, int n){
if(subt==1){
ll mn=0;
ll mx=1e18;
ll a[n];
for(int i=0; i< (n+1)/2; i++){
MinMax(mn, mx, &mn, &mx);
a[i]=mn;
a[n-i-1]=mx;
mn++;
mx--;
}
ll ans=0;
for(int i=1; i<n; i++){
ans=max(ans, a[i]-a[i-1]);
}
return ans;
}
else{
ll mn=0; ll mx=1e18;
MinMax(mn, mx, &mn, &mx);
ll mngap=(mx-mn+n-2)/(n-1)+1;
ll l=mn+1;
while(true){
ll qmn=l;
if(mx-qmn+1<mngap)break;
ll qmx=l+mngap-1;
MinMax(qmn, qmx, &qmn, &qmx);
if(qmx==-1){
while(true){
ll posgp=2*mngap;
ll qmn2=l;
ll qmx2=l+posgp-1;
if(qmx2>=mx){
qmx2=mx-1;
MinMax(qmn2, qmx2, &qmn2, &qmx2);
if(qmx2==-1){
return mx-l+1;
}
else{
return qmx2-l+1;
}
}
MinMax(qmn2, qmx2, &qmn2, &qmx2);
if(qmx2==-1){
mngap=posgp+1;
}
else{
mngap=qmn2-l+2;
l=qmx2+1;
break;
}
}
}
else{
if(qmx==qmn && qmx==l+mngap-1){
mngap++;
}
l=qmx+1;
}
}
return mngap-1;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |