제출 #1143599

#제출 시각아이디문제언어결과실행 시간메모리
1143599crispxxHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
3095 ms67584 KiB
/** * author: a.k * created: idk **/ #include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define int long long #define nl '\n' struct segtree { int n; vector<int> t; segtree(int n) : n(n), t(n << 2) {} void upd(int v, int tl, int tr, int i, int x) { if(tl == tr) { t[v] = x; return; } int tm = (tl + tr) >> 1; if(i <= tm) upd(v << 1, tl, tm, i, x); else upd(v << 1 | 1, tm + 1, tr, i, x); t[v] = max(t[v << 1], t[v << 1 | 1]); } void upd(int i, int x) { upd(1, 1, n, i, x); } int get(int v, int tl, int tr, int l, int r) { if(r < tl || tr < l) return 0; if(l <= tl && tr <= r) return t[v]; int tm = (tl + tr) >> 1; int L = get(v << 1, tl, tm, l, r); int R = get(v << 1 | 1, tm + 1, tr, l, r); return max(L, R); } int get(int l, int r) { if(l > r) return 0; return get(1, 1, n, l, r); } }; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<int> a(n); for(auto &u : a) cin >> u; while(m--) { int l, r, k; cin >> l >> r >> k; segtree t(n); vector<pair<int, int>> v; for(int i = l; i <= r; i++) { v.emplace_back(a[i - 1], i); t.upd(i, a[i - 1]); } sort(all(v)); bool flag = true; for(int i = (int)v.size() - 1; i >= 0; i--) { auto [u, idx] = v[i]; if(u + t.get(idx + 1, r) > k) { flag = false; break; } t.upd(idx, 0); } cout << flag << nl; } }
#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...