제출 #145323

#제출 시각아이디문제언어결과실행 시간메모리
145323MKopchevpopa (BOI18_popa)C++14
100 / 100
104 ms508 KiB
#include<bits/stdc++.h> #include<popa.h> using namespace std; stack<int> open,idle; int n_,in_; int ask(int a,int b,int c,int d) { while(a>b); while(c>d); in_++; return query(a,b,c,d); } int solve(int N, int* Left, int* Right) { n_=N; in_=0; for(int i=0;i<N;i++)Left[i]=-1,Right[i]=-1; open=idle; Left[0]=-1; open.push(0); for(int i=1;i<N;i++) { int prev=-1; while(open.size()&&ask(open.top(),i,i,i)) { prev=open.top(); open.pop(); } if(open.size())Right[open.top()]=i; Left[i]=prev; open.push(i); } set<int> seen={}; for(int i=0;i<N;i++) { seen.insert(Left[i]); seen.insert(Right[i]); } assert(in_<=4*N); for(int i=0;i<N;i++) if(seen.count(i)==0)return i; assert(0==1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...