Submission #1092029

#TimeUsernameProblemLanguageResultExecution timeMemory
1092029juicyHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
493 ms63644 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif const int N = 1e6 + 5; int n, m; int a[N], s[N], res[N]; void upd(int i, int x) { for (; i; i -= i & -i) { s[i] = max(s[i], x); } } int qry(int i) { int res = 0; for (; i <= n; i += i & -i) { res = max(res, s[i]); } return res; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; for (int i = 1; i <= n; ++i) { cin >> a[i]; } vector<array<int, 4>> que; for (int i = 1; i <= m; ++i) { int l, r, k; cin >> l >> r >> k; que.push_back({r, l, k, i}); } sort(que.begin(), que.end()); vector<int> st; for (int i = 1, j = 0; i <= n; ++i) { while (st.size() && a[st.back()] <= a[i]) { st.pop_back(); } if (st.size()) { upd(st.back(), a[st.back()] + a[i]); } st.push_back(i); while (j < m && que[j][0] == i) { res[que[j][3]] = qry(que[j][1]) <= que[j][2]; ++j; } } for (int i = 1; i <= m; ++i) { cout << res[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...