Submission #1306325

#TimeUsernameProblemLanguageResultExecution timeMemory
1306325domiHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
17 / 100
966 ms90424 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define sz(a) (int)((a).size()) #define all(a) (a).begin(), (a).end() #define lsb(x) (x & (-x)) #define vi vector<int> #define YES { cout << "YES" << endl; return; } #define NO { cout << "NO" << endl; return; } using ll = long long; using pii = std::pair<int, int>; const int NMAX = 1e6; const int VMAX = 2e9; using namespace std; vector<array<int, 3>>qu[NMAX + 5]; int a[NMAX + 5], ans[NMAX + 5], n, q; struct Seg { int aint[4 * NMAX + 5]; void update(int pos, int val, int nod = 1, int st = 1, int dr = n) { if (st == dr) { aint[nod] = val; return; } int m = (st + dr) >> 1; if (pos <= m) update(pos, val, 2 * nod, st, m); else update(pos, val, 2 * nod + 1, m + 1, dr); aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]); } int query(int l, int r, int nod = 1, int st = 1, int dr = n) { if (st > r || dr < l) return INT_MIN; if (l <= st && dr <= r) return aint[nod]; int m = (st + dr) >> 1; return max(query(l, r, 2 * nod, st, m), query(l, r, 2 * nod + 1, m + 1, dr)); } }aint; signed main() { cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> q; for (int i = 1; i <= n; ++i) cin >> a[i]; for (int i = 1, l, r, k; i <= q; ++i) { cin >> l >> r >> k; qu[r].push_back({l, k, i}); } stack<int>st; for (int i = 1; i <= n; ++i) { while (!st.empty() && a[i] >= a[st.top()]) st.pop(); int x = (st.empty() ? 0 : st.top()); aint.update(x, a[i] + a[x]); st.push(i); for (auto &[l, k, idx] : qu[i]) ans[idx] = (aint.query(l, n) <= k); } for (int i = 1; i <= q; ++i) cout << ans[i] << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...