제출 #1229624

#제출 시각아이디문제언어결과실행 시간메모리
1229624alexander707070Abracadabra (CEOI22_abracadabra)C++20
10 / 100
3094 ms19908 KiB
#include<bits/stdc++.h> #define MAXN 1000007 using namespace std; struct query{ int t,pos,id; inline friend bool operator < (query fr,query sc){ return fr.t<sc.t; } }s[MAXN]; int n,qs,p[MAXN],q[MAXN]; int ans[MAXN]; bool ok; bool transform(){ int pt=n/2+1,m=0; for(int i=1;i<=n/2;i++){ while(pt<=n and p[pt]<p[i]){ m++; q[m]=p[pt]; pt++; } m++; q[m]=p[i]; } while(pt<=n){ m++; q[m]=p[pt]; pt++; } bool ok=false; for(int i=1;i<=n;i++){ if(p[i]!=q[i])ok=true; p[i]=q[i]; } return ok; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>qs; for(int i=1;i<=n;i++){ cin>>p[i]; } for(int i=1;i<=qs;i++){ cin>>s[i].t>>s[i].pos; s[i].id=i; } sort(s+1,s+qs+1); ok=true; int curr=0; for(int i=1;i<=qs;i++){ while(ok and curr<s[i].t){ ok=transform(); curr++; } ans[s[i].id]=p[s[i].pos]; } for(int i=1;i<=qs;i++){ cout<<ans[i]<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...