Submission #792463

#TimeUsernameProblemLanguageResultExecution timeMemory
792463t6twotwoAbracadabra (CEOI22_abracadabra)C++17
40 / 100
296 ms45056 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; void shuffle(vector<int> &a) { int n = a.size(); vector<int> b; int j = n / 2; for (int i = 0; i < n / 2; i++) { while (j < n && a[j] < a[i]) { b.push_back(a[j++]); } b.push_back(a[i]); } for (int i = j; i < n; i++) { b.push_back(a[i]); } swap(a, b); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, Q; cin >> N >> Q; vector<int> A(N); for (int &x : A) { cin >> x; } if (N <= 1000 && 0) { vector<vector<int>> T; do { T.push_back(A); shuffle(A); } while (A != T.back()); int M = T.size(); while (Q--) { int t, i; cin >> t >> i; t = min(t, M - 1); i--; cout << T[t][i] << "\n"; } return 0; } vector<int> q(Q); int t; for (auto &x : q) { cin >> t >> x; x--; } if (t == 0) { for (int x : q) { cout << A[x] << "\n"; } return 0; } vector<int> f(N, N), stk; for (int i = N - 1; i >= 0; i--) { while (!stk.empty() && A[stk.back()] < A[i]) { stk.pop_back(); } if (!stk.empty()) { f[i] = stk.back(); } stk.push_back(i); } set<tuple<int, int, int>> s, s2; for (int i = 0; i < N; i = f[i]) { s.emplace(A[i], i, f[i]); } int T = N; while (t--) { while (1) { auto [_, l, r] = *prev(s.end()); if (T - r + l < N / 2) { break; } T -= r - l; s2.insert(*prev(s.end())); s.erase(prev(s.end())); } if (T == N / 2) { break; } auto [v, l, r] = *prev(s.end()); s.erase(prev(s.end())); int m = r - T + N / 2; s.emplace(v, l, m); for (int i = m; i < r; i = f[i]) { s.emplace(A[i], i, min(r, f[i])); } } s.insert(s2.begin(), s2.end()); vector<int> B; for (auto [_, l, r] : s) { B.insert(B.end(), A.begin() + l, A.begin() + r); } for (int x : q) { cout << B[x] << "\n"; } return 6/22; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...