Submission #1349318

#TimeUsernameProblemLanguageResultExecution timeMemory
1349318croanAbracadabra (CEOI22_abracadabra)C++20
10 / 100
522 ms589824 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>        
#include <ext/pb_ds/tree_policy.hpp>


using namespace std;
using namespace __gnu_pbds;


template<class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define ll long long
#define int long long


#define pb push_back
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

#define F first
#define S second

#define rep(i,a,b) for (int i = (a); i < (b); ++i)
#define per(i,a,b) for (int i = (a); i >= (b); --i)
#define each(x, a) for (auto &x : a)

#define INF 1e18
#define MOD 1000000007
#define MOD2 998244353

#define pyset unordered_set
#define vec vector
#define pii pair<int,int>
#define vi vector<int>
#define vpii vector<pair<int,int>>
#define gpmap gp_hash_table
#define gpmapii gp_hash_table<int,int>

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,q;
    cin >> n >> q;
    vi a(n);
    for(int i = 0;i<n;i++){
        cin >> a[i];
    }
    int t = 0;
    vec<vi> decks;
    decks.pb(a);
    while(true){
        vi b;
        b.reserve(n);
        int i = 0;
        int j = n/2;
        while(i < n/2 or j<n){
            if(i == n/2){
                b.pb(a[j]);
                j++;
            }
            else if(j==n){
                b.pb(a[i]);
                i++;
            }
            else if(a[i]<a[j]){
                b.pb(a[i]);
                i++;
            }
            else{
                b.pb(a[j]);
                j++;
            }
        }
        swap(a,b);
        t++;
        if(a==b){
            break;
        }
        decks.pb(a);
    }
    rep(i,0,q){
        int a,b;
        cin >> a >> b;
        cout << decks[min(t-1,a)][b-1] << endl;
    }
    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...