제출 #956828

#제출 시각아이디문제언어결과실행 시간메모리
956828LukapAbracadabra (CEOI22_abracadabra)C++14
10 / 100
648 ms524288 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2e5 + 500;

int n, q, t;
int niz[MAXN];
vector<int> v, novi;
vector<vector<int> > rj;
bool da = false;
int cnt;

void solve () {
    for (int i = 0; i < n; i++) v.push_back (niz[i]);
    for (int i = 0; i < n; i++) novi.push_back(niz[i]);

    while (!da) {
        v = novi;
        novi.clear ();

        int ind1 = 0, ind2 = n / 2;
        while (ind1 < n / 2 || ind2 < n) {
            if (ind1 == n / 2 || (ind2 < n && v[ind2] < v[ind1])) {
                novi.push_back (v[ind2]);
                ind2++;
            }
            else {
                novi.push_back (v[ind1]);
                ind1++;
            }
        }

        da = true;
        for (int i = 0; i < n; i++) {
            if (v[i] != novi[i]) da = false;
        }

        rj.push_back(v);
        cnt++;
    }

//    for (auto it: rj) {
//        for (auto itt: it) cout << itt << ' ';
//        cout << "\n";
//    }
}

int main () {
    ios_base::sync_with_stdio(false);
    cin.tie (0);
    cout.tie (0);

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

    solve ();
    for (int i = 0; i < q; i++) {
        int t, a;
        cin >> t >> a;
        cout << rj[min (t, cnt - 1)][a - 1] << "\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...