제출 #1123969

#제출 시각아이디문제언어결과실행 시간메모리
1123969EfeBabagilAbracadabra (CEOI22_abracadabra)C++20
10 / 100
3094 ms19952 KiB
#include <bits/stdc++.h>

using namespace std;

int n;

vector<int> suf(vector<int> v) {
    vector<int> ans;
    int m = n/2;
    int i = 0, j = m;
    while ((i < m) || (j < n)) {
        if (i == m) {
            ans.push_back(v[j]);
            j++;
            continue;
        }
        if (j == n) {
            ans.push_back(v[i]);
            i++;
            continue;
        }
        if (v[i] < v[j]) {
            ans.push_back(v[i]);
            i++;
        } else {
            ans.push_back(v[j]);
            j++;
        }
    }
    return ans;
}



int32_t main() {
    int q;
    cin >> n >> q;
    vector<int> arr(n);
    for (int i=0; i<n;i++)
    cin >> arr[i];
    vector<pair<pair<int,int>, int>> queries(q);
    vector<int> ans(q);
    for (int i=0; i<q;i++) {
        cin >> queries[i].first.first >> queries[i].first.second;
        queries[i].second = i;
    }
    sort(queries.begin(), queries.end());
    int t = 0;
    int flag = 0;
    for (int i=0;i<q;i++) {
        while ((queries[i].first.first > t) && !flag) {
            vector<int> temp = suf(arr);
            if (temp == arr) {
                flag = 1;
            } else {
                arr = temp;
            }
            t++;
        }
        ans[queries[i].second] = arr[queries[i].first.second - 1];
    }
    for (int i=0;i<q;i++) 
    cout << ans[i] <<endl;
    /*
    vector<int> srt={7,5,2,9,10,8,4,3,6,1};
    for(int i=0;i<10;i++)
    {
        srt=suf(srt);
        for(int i=0;i<10;i++)
        {
        cout<<srt[i]<<" ";
        }
        cout<<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...