diff --git a/day10/U178578/U178578.cpp b/day10/U178578/U178578.cpp index e69de29..887f90f 100644 --- a/day10/U178578/U178578.cpp +++ b/day10/U178578/U178578.cpp @@ -0,0 +1,68 @@ +#include +using namespace std; +#define int long long + +struct Node{ + int k,x,q; + // bool isdone; +}; + +const int MAX_N=5e5+5; +int n,q; +int a[MAX_N],/*x[MAX_N],k[MAX_N],*/ans[MAX_N],xdir[MAX_N]; +Node nodes[MAX_N]; +int pn=0,p1=1; +int readint(); + +signed main(signed argc,char *argv[]){ + n=readint(); + for(int i=1;i<=n;i++){ + a[i]=readint(); + xdir[a[i]]=i; + } + q=readint(); + + for(int i=1;i<=q;i++){ + int k = readint(),x=readint(); + // k[i]=readint(); + // x[i]=readint(); + nodes[++pn]={k,x,i}; + } + sort(nodes+1,nodes+pn+1,[](Node a,Node b)->bool{ + return a.ka[j+1]){ + xdir[a[j]]=j+1; + xdir[a[j+1]]=j; + swap(a[j],a[j+1]); + } + } + if(p1==pn){ + break; + } + while(p1!=pn&&nodes[p1].k==i){ + auto &now = nodes[p1++]; + ans[now.q]=xdir[now.x]; + } + } + for(int i=1;i<=q;i++){ + cout<