Submission #499077

#TimeUsernameProblemLanguageResultExecution timeMemory
499077ZiyodaHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
943 ms85060 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define IOS ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); const ll N = 1e6+1; ll tr[N], n; vector<ll>ad[N], a(N), li(N), ri(N), ki(N); void add(ll q, ll w){ while(q>0){ tr[q]=max(tr[q], w); q -= q&-q; } } int sol(ll w){ ll c=0; while(w<=n){ //cout << tr[w] << ' '; c=max(c, tr[w]); w += w&-w; //cout << c << " "; } return c; } void solve(){ ll m; cin >> n >> m; for(int i=1; i<=n; i++) cin >> a[i]; vector<ll>s; for(int i=1; i<=m; i++){ cin >> li[i] >> ri[i] >> ki[i]; ad[ri[i]].push_back(i); } vector<bool>y(m+1); for(int i=1; i<=n; i++){ while(!s.empty()){ //cout << a[s.back()] << ' '; if(a[i]>=a[s.back()]) s.pop_back(); else break; } ll p = (s.empty()? 0:s.back()); //cout << a[p]+a[i] << endl; add(p, a[p]+a[i]); for(ll u:ad[i]){ y[u] = (sol(li[u])<=ki[u]); //cout << ri[u] << endl; } s.push_back(i); } //cout << 'u' << endl; for(int i=1; i<=m; i++) cout << y[i] << "\n"; } int main() { IOS; int t=1; //cin >> t; while(t--){ solve(); } }
#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...