#include <iostream>
using namespace std;
const int N = 1000;
const int Q = 1'000'000;
const int LN = 500;
int n, q;
int deck[LN][N];
int main(){
    cin >> n >> q;
    for(int i=0; i<n; i++){
        cin >> deck[0][i];
    }
    for(int i=0; i<LN-1; i++){
        int p1 = 0;
        int p2 = n/2;
        while(p1<n/2 and p2<n){
            if(deck[i][p1] < deck[i][p2]){
                deck[i+1][p1+p2-n/2] = deck[i][p1];
                p1++;
            } else {
                deck[i+1][p1+p2-n/2] = deck[i][p2];
                p2++;
            }
        }
        while(p1<n/2){
            deck[i+1][p1+p2-n/2] = deck[i][p1];
            p1++;
        }
        while(p2<n){
            deck[i+1][p1+p2-n/2] = deck[i][p2];
            p2++;
        }
    }
    for(int qi=0; qi<q; qi++){
        int t, i;
        cin >> t >> i;
        if(t >= LN) t = LN-1;
        cout << deck[t][i-1] << '\n';
    }
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |