제출 #42685

#제출 시각아이디문제언어결과실행 시간메모리
42685fefeGap (APIO16_gap)C++14
42.65 / 100
113 ms3736 KiB
#include "gap.h" #include<stack> #include<stdio.h> #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-1; while(1){ if(y==-1){y++;continue;} f(ps+1,ps+(1LL<<(y)),&s,&e); if(s!=-1) break; y++; } if(x>y){ps=e;continue;} 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...