제출 #867806

#제출 시각아이디문제언어결과실행 시간메모리
867806teeslaAbracadabra (CEOI22_abracadabra)C++17
10 / 100
3068 ms20100 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
typedef pair<ii,int> iii;
vector<int> v;
int ok = 0;
int n, q; 
void mix(){

    vector<int> novo;

    int a = 0, b = n/2;

    for(int i=0; i<n; i++){

        if(a == -1) {novo.push_back(v[b]);b++;}
        else if(b == -1){novo.push_back(v[a]); a++;}
        else{

            if(v[a] < v[b]){
                novo.push_back(v[a]);
                a++;
            }
            else{
                novo.push_back(v[b]);
                b++;
            }
        }

        if(a >= n/2) a= -1;
        if(b >= n) b = -1; 
    }

    ok = 1;

    for(int i=0; i<n; i++){
        if(v[i] != novo[i]) ok = 0;
    }

    swap(novo, v);
    return;
}

int main(){

    cin >> n >> q;
    v.resize(n);

    for(int i=0; i<n; i++) cin >> v[i];

    vector<iii> aux(q);

    for(int i=0; i<q; i++){
        int t,pos; cin >> t >> pos;

        aux[i] = {{t,pos}, i};
    }

    sort(aux.begin(), aux.end());

    vector<int> res(q);

    int t = 0;

    for(auto [a,b] : aux){

        auto [tt, pos] = a;
        while(t!= tt and ok == 0){

            mix();
            t++;
        }

        res[b] = v[pos-1];
    }

    for(auto i: res) cout << i << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...