#include<bits/stdc++.h>
using namespace std;
long long mas[500001];
long long zaq[500001];
priority_queue<pair<long long,pair<long long,long long> > > opa;
int main(){
long long M,N,Q;
cin>>M>>N>>Q;
for(long long i=0;i<N;i++){
cin>>mas[i];
}
for(long long i=0;i<Q;i++){
cin>>zaq[i];
}
long long pre=0;
for(long long i=0;i<N;i++){
long long l=pre+1,r=mas[i]-1;
if((r-l)>=0){
opa.push({(r-l+1),{0-l,0-r}});
}
pre=mas[i];
}
long long L=pre+1,R=M;
if(R-L>=0){
opa.push({R-L+1,{0-L,0-R}});
}
long long koj=0;
while(zaq[koj]<=N && koj<Q){
cout<<mas[zaq[koj]-1]<<endl;
koj++;
}
long long sega=N+1;
for(long long i=koj;i<Q;i++){
while(sega<zaq[i]){
pair<long long,pair<long long,long long> > sej=opa.top();
opa.pop();
long long l=0-sej.second.first;
long long r=0-sej.second.second;
long long mid=(l+r)/2;
long long r1=mid-1,l1=l;
long long l2=mid+1,r2=r;
if(r1-l1>=0){
opa.push({r1-l1+1,{0-l1,0-r1}});
}if(r2-l2>=0){
opa.push({r2-l2+1,{0-l2,0-r2}});
}
sega++;
}
pair<long long,pair<long long,long long> > sej=opa.top();
opa.pop();
long long l=0-sej.second.first;
long long r=0-sej.second.second;
long long mid=(l+r)/2;
cout<<mid<<"\n";
long long l1=l,r1=mid-1;
long long l2=mid+1,r2=r;
if(r1-l1>=0){
opa.push({r1-l1+1,{0-l1,0-r1}});
}if(r2-l2>=0){
opa.push({r2-l2+1,{0-l2,0-r2}});
}
sega++;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |