#include <iostream>
using namespace std;
const int N = 1002;//200'000;
const int Q = 1'000'000;
const int LN = N;//20;
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... |