Submission #569691

#TimeUsernameProblemLanguageResultExecution timeMemory
569691SSRSHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
17 / 100
3029 ms82632 KiB
#include <bits/stdc++.h> using namespace std; const long long INF1 = 1000000000000; int main(){ int N, M; cin >> N >> M; vector<long long> w(N); for (int i = 0; i < N; i++){ cin >> w[i]; } vector<int> l(M), r(M); vector<long long> k(M); for (int i = 0; i < M; i++){ cin >> l[i] >> r[i] >> k[i]; l[i]--; } vector<vector<int>> query(N); for (int i = 0; i < M; i++){ query[l[i]].push_back(i); } vector<long long> ST = w; stack<int> st; st.push(N); vector<long long> mx(M, 0); for (int i = N - 1; i >= 0; i--){ while (st.top() != N){ int p = st.top(); if (w[i] <= w[p]){ break; } st.pop(); int q = st.top(); ST[p] += INF1; for (int j = p + 1; j < q; j++){ ST[j] -= w[p]; } } int p = st.top(); ST[i] -= INF1; for (int j = i + 1; j < p; j++){ ST[j] += w[i]; } st.push(i); for (int j : query[i]){ for (int p = i; p < r[j]; p++){ mx[j] = max(mx[j], ST[p]); } } } for (int i = 0; i < M; i++){ if (mx[i] <= k[i]){ cout << 1 << endl; } else { cout << 0 << endl; } } }
#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...