Submission #1042179

#TimeUsernameProblemLanguageResultExecution timeMemory
1042179flappybirdSushi (JOI16_sushi)C++17
15 / 100
12039 ms194312 KiB
//#define LOCAL #include <bits/stdc++.h> #include <cassert> #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx,avx2,fma") using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; #define MAX 1010101 #define MAXQ 101010 #define INF 1'000'000'100 #define bb ' ' #define ln '\n' #define Ln '\n' #define MOD 1000000007 #define TC 1 #ifdef LOCAL #define DEBUG(a) cout<<a #else #define DEBUG(...) 1234 #endif #define B 500 int A[MAX]; multiset<int> all[MAX]; priority_queue<int, vector<int>, greater<int>> upd[MAX]; int N, Q; void prop(int id) { all[id].clear(); int i; for (i = id * B; i < min(N - 1, (id + 1) * B); i++) { upd[id].emplace(A[i]); A[i] = upd[id].top(); upd[id].pop(); all[id].emplace(A[i]); } } signed main() { ios::sync_with_stdio(false), cin.tie(0); cin >> N >> Q; int i; for (i = 0; i < N; i++) cin >> A[i]; for (i = 0; i < N; i++) all[i / B].insert(A[i]); auto f = [&](int l, int r, int x) { int i; i = l; while (i <= r) { int b = i / B; if ((i % B == 0) && i + B - 1 <= r) { //DEBUG("ii" << i << ln); upd[b].push(x); all[b].insert(x); x = *all[b].rbegin(); all[b].erase(all[b].find(x)); i += B; //DEBUG('x' << x << bb); } else { if (upd[b].size()) prop(b); //DEBUG('i' << i << bb << A[i] << bb << x << ln); if (A[i] > x) { all[b].insert(x); all[b].erase(all[b].find(A[i])); swap(A[i], x); } i++; //DEBUG('y' << x << bb); } } return x; }; while (Q--) { int l, r, x; cin >> l >> r >> x; l--; r--; if (l > r) { x = f(l, N - 1, x); x = f(0, r, x); } else x = f(l, r, x); cout << x << ln; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...