Submission #789258

#TimeUsernameProblemLanguageResultExecution timeMemory
789258ymmAbracadabra (CEOI22_abracadabra)C++17
0 / 100
3071 ms40636 KiB
#include <bits/stdc++.h> #define Loop(x,l,r) for (ll x = (l); x < (r); ++x) typedef long long ll; typedef std::pair<int,int> pii; using namespace std; vector<int> shf(vector<int> vec) { int n = vec.size(); vector<int> ans; int p0 = 0, p1 = n/2; Loop (_,0,n) { if (p1 == n || (p0 < n/2 && vec[p0] < vec[p1])) ans.push_back(vec[p0++]); else ans.push_back(vec[p1++]); } return ans; } const int N = 1'000'010; int ans[N]; vector<pii> Q[N]; int main() { cin.tie(0) -> sync_with_stdio(false); int n, q; cin >> n >> q; vector<int> vec(n); //mt19937_64 rd(chrono::high_resolution_clock::now().time_since_epoch().count()); //iota(vec.begin(), vec.end(), 0); //shuffle(vec.begin(), vec.end(), rd); for (int &x : vec) cin >> x; //vecs.push_back(vec); Loop (i,0,q) { int t, p; cin >> t >> p; --p; t = min(t, n/2); Q[t].push_back({p, i}); } Loop (i,0,n/2) { for (auto [p, j] : Q[i]) ans[j] = vec[p]; //inplace_merge(vec.data(), vec.data()+n/2, vec.data()+n);//vec = shf(vec); vec = shf(vec); } for (auto [p, j] : Q[n/2]) ans[j] = vec[p]; Loop (i,0,q) cout << ans[i] << '\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...