Submission #1108533

#TimeUsernameProblemLanguageResultExecution timeMemory
1108533ortsacAbracadabra (CEOI22_abracadabra)C++17
10 / 100
3060 ms33976 KiB
#include <bits/stdc++.h> using namespace std; int n; vector<int> shf(vector<int> v) { vector<int> ans; int m = n/2; int p1 = 0, p2 = m; while ((p1 < m) || (p2 < n)) { if (p1 == m) { ans.push_back(v[p2]); p2++; continue; } if (p2 == n) { ans.push_back(v[p1]); p1++; continue; } if (v[p1] < v[p2]) { ans.push_back(v[p1]); p1++; } else { ans.push_back(v[p2]); p2++; } } return ans; } #define pii pair<int, int> #define fr first #define se second int32_t main() { int q; cin >> n >> q; vector<int> s(n); for (int i = 0; i < n; i++) cin >> s[i]; vector<pair<pii, int>> queries(q); vector<int> ans(q); for (int i = 0; i < q; i++) { cin >> queries[i].fr.fr >> queries[i].fr.se; queries[i].se = i; } sort(queries.begin(), queries.end()); int t = 0; bool done = 0; for (auto u : queries) { while ((u.fr.fr > t) && !done) { vector<int> novo = shf(s); if (novo == s) { done = 1; } else { s = novo; } t++; } ans[u.se] = s[u.fr.se - 1]; } for (auto u : ans) cout << u << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...