Submission #739947

#TimeUsernameProblemLanguageResultExecution timeMemory
739947PagodePaivaAbracadabra (CEOI22_abracadabra)C++14
10 / 100
3060 ms67544 KiB
#include<bits/stdc++.h> #define N 200010 // #define Q 1000010 using namespace std; int n, q; vector <pair <int, int>> query; vector <int> v; bool ver = false; void shuff(){ vector <int> aux; int l = 0, r = n/2; while(l < n/2 or r < n){ if(l >= n/2){ aux.push_back(v[r]); r++; continue; } if(r >= n){ aux.push_back(v[l]); l++; continue; } if(v[l] < v[r]){ aux.push_back(v[l]); l++; } else{ aux.push_back(v[r]); r++; } } ver = true; for(int i = 0;i < n;i++){ if(v[i] != aux[i]) ver = false; } v = aux; return; } int main(){ cin >> n >> q; for(int i = 0;i < n;i++){ int x; cin >> x; v.push_back(x); } map <pair <int, int>, int> m; for(int i = 0;i < q;i++){ int a, b; cin >> a >> b; query.push_back({a, b}); m[{a, b}] = i; } vector <pair <int, int>> ans = query; sort(query.begin(), query.end()); query.push_back({1, 1}); int con = 0; for(int i = 0;con < q;i++){ if(ver == true){ while(con < q){ m[query[con]] = v[query[con].second-1]; con++; } break; } while(query[con].first == i and con < q){ m[query[con]] = v[query[con].second-1]; con++; } shuff(); } for(auto x : ans){ cout << m[x] << "\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...