제출 #145293

#제출 시각아이디문제언어결과실행 시간메모리
145293MKopchevpopa (BOI18_popa)C++14
0 / 100
3087 ms376 KiB
#include<bits/stdc++.h> #include<popa.h> using namespace std; stack<int> open,idle; /* int query(int a,int b,int c,int d) { cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl; int ret; cin>>ret; return ret; } */ int ask(int a,int b,int c,int d) { while(a>b); while(c>d); return query(a,b,c,d); } int solve(int N, int* Left, int* Right) { 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(); } Left[i]=prev; open.push(i); } open=idle; Right[N-1]=-1; open.push(N-1); for(int i=N-2;i>=0;i--) { int prev=-1; while(open.size()&&ask(i,open.top(),i,i)) { prev=open.top(); open.pop(); } Right[i]=prev; open.push(i); } set<int> seen={}; for(int i=0;i<N;i++) { seen.insert(Left[i]); seen.insert(Right[i]); } for(int i=0;i<N;i++) if(seen.count(i)==0)return i; assert(0==1); } /* int n=7,a[10],b[10]; int main() { cout<<solve(n,a,b)<<endl; for(int i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl; for(int i=0;i<n;i++)cout<<b[i]<<" ";cout<<endl; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...