제출 #1226179

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

using namespace std;

#define ll long long
const ll mmod = 998244353;  
#define vl vector<long long>
#define vll vector<vector<long long>>
#define pl pair<long long, long long>
#define vb vector<bool>

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n, q;
    cin >> n >> q;

    vl nums(n);
    for (ll i = 0; i < n; i++){cin >> nums[i];}

    vl ans(q);
    vll query;
    for (ll i = 0; i < q; i++){
        ll a, b;
        cin >> a >> b;
        query.push_back({min(n,a), b, i});
    }

    sort(query.begin(), query.end());
    ll t = 0;
    for(ll i = 0; i < q; i++){
        while (t < query[i][0]){
            t++;
            vl new_nums;
            ll a = 0; ll b = n/2;
            while (a < n/2 && b < n){
                if (nums[a] < nums[b]){
                    new_nums.push_back(nums[a]);
                    a++;
                }
                else{
                    new_nums.push_back(nums[b]);
                    b++;
                }
            }
            while (a < n/2){new_nums.push_back(nums[a]); a++;}
            while (b < n){new_nums.push_back(nums[b]), b++;}
            nums.clear();
            nums = new_nums;
        }
        if(t == query[i][0]){
            ans[query[i][2]] = nums[query[i][1]-1];
        }
        
        
    }
    for (ll i = 0; i < q; i++)cout << ans[i] << "\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...