제출 #1227710

#제출 시각아이디문제언어결과실행 시간메모리
1227710ProtonDecay314Abracadabra (CEOI22_abracadabra)C++20
10 / 100
483 ms589824 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vll; typedef vector<vll> vvll; typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<vvi> v3i; typedef vector<v3i> v4i; typedef vector<bool> vb; typedef vector<vb> vvb; typedef pair<int, int> pi; typedef pair<ll, ll> pll; #define INF(dt) numeric_limits<dt>::max() #define NINF(dt) numeric_limits<dt>::min() #define pb push_back void printv(const vi& a) { for(int v : a) cerr << v << " "; cerr << endl; } vi sh(const vi& a) { int n = a.size(); vi res(n, 0); int hlfn = n >> 1; // [0, hlfn), [hlfn, n) int p1 = 0, p2 = hlfn; int resi = 0; while(p1 < hlfn && p2 < n) { if(a[p1] < a[p2]) { res[resi] = a[p1]; p1++; } else { res[resi] = a[p2]; p2++; } resi++; } while(p1 < hlfn) { res[resi] = a[p1]; p1++; resi++; } while(p2 < n) { res[resi] = a[p2]; p2++; resi++; } return res; } bool done(const vi& a) { int n = a.size(); int hlfn = n >> 1; int maxhalf = *max_element(a.begin(), next(a.begin(), hlfn)); return a[hlfn] > maxhalf; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, q; cin >> n >> q; vi a(n, 0); for(int& v : a) cin >> v; vvi states; while(!done(a)) { states.pb(a); // printv(a); a = sh(a); } // printv(a); states.pb(a); while(q--) { int t, i; cin >> t >> i; i--; t = min(t, (int)(states.size()) - 1); cout << states[t][i] << "\n"; } cout << flush; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...