Submission #1138690

#TimeUsernameProblemLanguageResultExecution timeMemory
1138690AHOKAHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
506 ms83016 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define threesum cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false) #define all(a) a.begin(), a.end() #define F first #define S second #define int long long #define double long double #define pii pair<int, int> #define ppp pair<int, pii> #define dout cout << fixed << setprecision(15) #define mid ((l + r) / 2) #define lc (2 * id) #define rc (lc + 1) const int maxn = 1e6 + 10, maxm = 5e3 + 10, oo = 1e18 + 10, lg = 18, sq = 350, mod = 998244353; int n, m, ans[maxn]; int a[maxn]; vector<ppp> q[maxn]; int fen[maxn]; void add(int i, int val){ for (i = maxn - i - 5; i < maxn; i += i & -i) fen[i] = max(fen[i], val); } int get(int i){ int res = -oo; for (i = maxn - i - 5; i > 0; i -= i & -i) res = max(fen[i], res); return res; } signed main() { threesum; cin >> n >> m; for (int i = 1; i <= n;i++) cin >> a[i]; for (int i = 1; i <= m;i++){ int l, r, k; cin >> l >> r >> k; q[r].push_back({l, {k, i}}); } vector<int> stk; for (int i = 1; i <= n; i++) { while(stk.size() && a[stk.back()] <= a[i]) stk.pop_back(); if(stk.size()) add(stk.back(), a[stk.back()] + a[i]); stk.push_back(i); for(auto [l, p] : q[i]){ auto [k, id] = p; ans[id] = (get(l) <= k); } } for (int i = 1; i <= m;i++) cout << ans[i] << "\n"; }
#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...