Submission #867192

#TimeUsernameProblemLanguageResultExecution timeMemory
867192PagodePaivaAbracadabra (CEOI22_abracadabra)C++14
10 / 100
1585 ms524288 KiB
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false);cin.tie(0); int n, q; cin >> n >> q; vector <int> v; for(int i = 1;i <= n;i++){ int x; cin >> x; v.push_back(x); } vector <array <int, 3>> query; for(int i = 1;i <= q;i++){ int a, b; cin >> a >> b; query.push_back({a, b, i}); } sort(query.begin(), query.end()); map <array <int, 3>, int> resp; map <vector <int>, int> mark; int st = 0; bool ac = true; for(auto x : query){ while(st < x[0] and ac){ mark[v] = 1; vector <int> a, b; for(int i = 0;i < n/2;i++){ a.push_back(v[i]); } for(int i = n/2;i < n;i++){ b.push_back(v[i]); } vector <int> next; int l = 0, r = 0; while(l < n/2 or r < n/2){ if(r == n/2){ swap(a, b); swap(l, r); } if(l == n/2){ for(int i = r;i < n;i++){ next.push_back(b[i]); } } if(a[l] < b[r]){ next.push_back(a[l]); l++; } else{ next.push_back(b[r]); r++; } } if(mark[next] == 1) ac = false; st++; v = next; } resp[x] = v[x[1]-1]; } for(auto &x : query){ swap(x[0], x[2]); } sort(query.begin(), query.end()); for(auto x : query){ cout << resp[{x[2], x[1], x[0]}] << '\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...