이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "gap.h"
#include<bits/stdc++.h>
using namespace std;
long long findGap(int T, int N) {
if(T==1){
long long leftbound=0, rightbound=1e18;
priority_queue <long long> pq;
long long cnt=0;
for(int i=0;i<=N/2;i++){
long long l,r;
if(cnt!=N){
MinMax(leftbound,rightbound,&l,&r);
pq.push(l);
cnt++;
if(l!=r){
pq.push(r);
cnt++;
leftbound=l+1;
rightbound=r-1;
}
else break;
}
else break;
}
long long prev=pq.top();
pq.pop();
long long ans=0;
while(pq.size()!=0){
ans=max(ans,prev-pq.top());
prev=pq.top();
pq.pop();
}
return ans;
}
else{
// TODO: implementationt
long long leftbound, rightbound;
long long haha=1e18;
MinMax(0, haha, &leftbound, &rightbound);
if(N==2){
return rightbound-leftbound;
}
leftbound++;
rightbound--;
long long range_size=ceil((rightbound-leftbound)*1.0/N);
long long dbsic_noob=(rightbound-leftbound+1);
long long dbsic_sofai=ceil(dbsic_noob*1.0/(range_size));
long long arr[dbsic_sofai];
long long running=leftbound-1;
for(int i=0;i<dbsic_sofai;i++){
arr[i]=range_size-1;
if(i<(dbsic_noob/range_size)){
arr[i]++;
}
//printf("%lld\n",arr[i]);
}
long long ans=0,ans1=0,ans2=0;
long long prevl, prevr=-1;
bool ok=true;
for(int i=0;i<dbsic_sofai;i++){
long long l,r;
MinMax(running+1,running+arr[i],&l,&r);
running+=arr[i];
if(l==-1 && r==-1){
continue;
}
else{
if(ok==true){
ok=false;
ans1=l-leftbound+1;
}
ans2=rightbound+1-r;
if(i!=0 && prevr!=-1 && ans<(l-prevr)){
ans=l-prevr;
}
prevl=l, prevr=r;
}
}
ans1=max(ans1,ans2);
ans=max(ans,ans1);
return ans;
}
}
컴파일 시 표준 에러 (stderr) 메시지
gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:59:19: warning: variable 'prevl' set but not used [-Wunused-but-set-variable]
59 | long long prevl, prevr=-1;
| ^~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |