Submission #1159849

#TimeUsernameProblemLanguageResultExecution timeMemory
1159849Kalata_56OGLEDALA (COI15_ogledala)C++20
41 / 100
4038 ms589824 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...