제출 #1156481

#제출 시각아이디문제언어결과실행 시간메모리
1156481MuhammadSaramHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
2192 ms185628 KiB
#include <bits/stdc++.h> using namespace std; const int M = 1e6 + 1; int seg[M*2]; void modify(int p,int x,int v=0,int s=0,int e=M) { if (s+1==e) { seg[v]=x; return; } int mid=(s+e)/2,lc=v+1,rc=v+(mid-s)*2; if (p<mid) modify(p,x,lc,s,mid); else modify(p,x,rc,mid,e); seg[v]=max(seg[lc],seg[rc]); } int get(int l,int r,int v=0,int s=0,int e=M) { if (l>=e or r<=s) return 0; if (l<=s && e<=r) return seg[v]; int mid=(s+e)/2,lc=v+1,rc=v+(mid-s)*2; return max(get(l,r,lc,s,mid),get(l,r,rc,mid,e)); } signed main() { ios::sync_with_stdio(0); cin.tie(NULL), cout.tie(NULL); int n,m,x; cin>>n>>m; stack<int> q; map<int,int> lt; vector<int> v[n]; for (int i=0;i<n;i++) { cin>>x; while (!q.empty() && q.top()<=x) q.pop(); if (q.empty()) modify(i,0); else modify(i,q.top()+x),v[lt[q.top()]].push_back(i); q.push(x); lt[x]=i; } vector<vector<int>> qu[n]; bool ans[m]={}; for (int i=0;i<m;i++) { int l,r,k; cin>>l>>r>>k;l--; qu[l].push_back({r,k,i}); } for (int i=0;i<n;i++) { for (auto j:qu[i]) { if (get(i,j[0])<=j[1]) ans[j[2]]=1; } for (int j:v[i]) modify(j,0); } for (int i=0;i<m;i++) cout<<ans[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...