Submission #1188037

#TimeUsernameProblemLanguageResultExecution timeMemory
1188037lopkusAbracadabra (CEOI22_abracadabra)C++20
0 / 100
980 ms18312 KiB
#include <bits/stdc++.h>

const int B = 1001;


void solve() {
  int n, q;
  std::cin >> n >> q;
  std::vector<int> a(n + 1);
  for(int i = 1; i <= n; i++) {
    std::cin >> a[i];
  }
  std::vector<std::pair<int,int>> queries[B];
  std::vector<int> ans(q + 1, - 1);
  for(int i = 1; i <= q; i++) {
    int t, pos;
    std::cin >> t >> pos;
    if(t >= B) {
      ans[i] = pos;
    }
    else {
      queries[t].push_back({pos, i});
    }
  }
  std::vector<int> b = a;
  std::function<void()> Do = [&] () {
    int l = 1;
    int r = n / 2 + 1;
    std::vector<int> New;
    New.push_back(- 1);
    while(l <= n / 2 || r <= n) {
      if(l > n / 2) {
        New.push_back(b[r++]);
        continue;
      }
      if(r > n) {
        New.push_back(b[l++]);
        continue;
      }
      if(b[l] < b[r]) {
        New.push_back(b[l++]);
      }
      else {
        New.push_back(b[r++]);
      }
    }
    b = New;
  };
  for(int T = 0; T < B; T++) {
    for(auto [pos, i] : queries[T]) {
      ans[i] = b[pos];
    }
    Do();
  }
  for(int i = 1; i <= q; i++) {
    std::cout << ans[i] << "\n";
  }
}

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

  int t = 1;
  //std::cin >> t;
  while (t--) {
      solve();
  }

  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...