Submission #1294541

#TimeUsernameProblemLanguageResultExecution timeMemory
1294541k12_khoiHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
17 / 100
590 ms327680 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<int,int> #define X first #define Y second const int N=1e6+5; struct queries { int L,R,K,ID; } Q[N]; bool cmp_R(queries a,queries b) { return a.R<b.R; } int n,request,u,v,x,l; int a[N]; bool ans[N]; pii t[4*N]; vector <int> lazy[4*N]; void build(int id,int l,int r) { lazy[id].clear(); if (l==r) { t[id].X=0; t[id].Y=a[l]; return; } int m=(l+r)/2; build(id*2,l,m); build(id*2+1,m+1,r); t[id].X=0; t[id].Y=max(t[id*2].Y,t[id*2+1].Y); } void down(int id) { if (!lazy[id].empty()) { for (int x:lazy[id]) { if (t[id*2].Y>x) { t[id*2].X=max(t[id*2].X,t[id*2].Y+x); lazy[id*2].push_back(x); } if (t[id*2+1].Y>x) { t[id*2+1].X=max(t[id*2+1].X,t[id*2+1].Y+x); lazy[id*2+1].push_back(x); } } lazy[id].clear(); } } void update(int id,int l,int r) { if (u>r or v<l) return; if (u<=l and v>=r) { if (t[id].Y>x) { t[id].X=max(t[id].X,t[id].Y+x); lazy[id].push_back(x); } return; } down(id); int m=(l+r)/2; update(id*2,l,m); update(id*2+1,m+1,r); t[id].X=max(t[id*2].X,t[id*2+1].X); } int get(int id,int l,int r) { if (u>r or v<l) return 0; if (u<=l and v>=r) return t[id].X; down(id); int m=(l+r)/2; return max(get(id*2,l,m),get(id*2+1,m+1,r)); } int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin >> n >> request; for (int i=1;i<=n;i++) cin >> a[i]; for (int i=1;i<=request;i++) { cin >> Q[i].L >> Q[i].R >> Q[i].K; Q[i].ID=i; } sort(Q+1,Q+request+1,cmp_R); build(1,1,n); l=1; for (int i=1;i<=request;i++) { while (l<=Q[i].R) { u=1; v=l-1; x=a[l]; update(1,1,n); l++; } u=Q[i].L; v=Q[i].R-1; if (get(1,1,n)>Q[i].K) ans[Q[i].ID]=0; else ans[Q[i].ID]=1; } for (int i=1;i<=request;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...