Submission #1293142

#TimeUsernameProblemLanguageResultExecution timeMemory
1293142youneverfindemeHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
958 ms76520 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; #define F first #define S second #define len(x) (int)(x).size() #define All(x) (x).begin(),(x).end() #define pb push_back const int N = 1e6 + 7; int n, r[N], a[N], ans[N], seg[N << 2], lazy[N << 2]; vector<pair<int, pii>> vec[N]; void Apply(int id, int x) { seg[id] = max(seg[id], x); lazy[id] = max(lazy[id], x); } void shift(int id) { for (int v: {id << 1, id << 1 | 1}) Apply(v, lazy[id]); lazy[id] = 0; } void upd(int l, int r, int x, int id = 1, int st = 0, int en = n) { if (r <= st || l >= en) return; if (st >= l && en <= r) { Apply(id, x); return; } shift(id); int mid = (st + en) >> 1; upd(l, r, x, id << 1, st, mid); upd(l, r, x, id << 1 | 1, mid, en); seg[id] = max(seg[id << 1], seg[id << 1 | 1]); } int get(int p, int id = 1, int st = 0, int en = n) { if (en - st == 1) return seg[id]; int mid = (st + en) >> 1; shift(id); if (p < mid) return get(p, id << 1, st, mid);; return get(p, id << 1 | 1, mid, en); } int32_t main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int q; cin >> n >> q; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < q; i++) { int l, r, x; cin >> l >> r >> x; vec[--l].pb({i, {--r, x}}); } for (int i = n - 1; i >= 0; i--) { r[i] = i + 1; while (r[i] < n && a[r[i]] < a[i]) { upd(r[i], n, a[i] + a[r[i]]); r[i] = r[r[i]]; } for (auto x: vec[i]) { int id = x.F; int r = x.S.F; int k = x.S.S; int t = get(r); // cout << "****" << i + 1 << ' ' << r + 1 << ' ' << t << '\n'; ans[id] = t <= k; } } for (int i = 0; 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...