이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "gap.h"
#include<stack>
#define f MinMax
#define max(x,y) ((x)>(y)?(x):(y))
using namespace std;
long long findGap(int T, int N)
{
long long s,e,ps,pe,maxx=0,x,y;
if(T==1){
f(0,(1LL<<62),&ps,&pe);
N-=2;
while(N>=2){
f(ps+1,pe-1,&s,&e);
N-=2;
maxx=max(maxx,max(s-ps,pe-e));
ps=s;pe=e;
}
if(N==1){
f(ps+1,pe-1,&s,&e);
return max(maxx,max(s-ps,pe-e));
}
return max(maxx,pe-ps);
}
f(0,(1LL<<62),&ps,&pe);
x=0;
struct node{
long long x,s,e;
};
stack<node> st;
node p;
while(ps!=pe){
y=x;
while(1){
f(ps+1,ps+(1LL<<y),&s,&e);
if(s!=-1) break;
y++;
}
if(x!=y) while(!st.empty()) st.pop();
p.x=ps;p.s=s;p.e=e;
st.push(p);
x=y;
ps=e;
}
if(x==0) return 1;
while(!st.empty()){
p=st.top();st.pop();
maxx=max(maxx,p.s-p.x);
}
return maxx;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |