Submission #1285019

#TimeUsernameProblemLanguageResultExecution timeMemory
1285019tntHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
829 ms42404 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define s second #define f first #define int long long #define all(v) v.begin(),v.end() const long long inf = 2e9 + 7; const int N = 1e6 + 10; vector <int> last(N,-inf); int t[N * 4]; int d[N]; void build(int u,int l,int r){ if(l == r){ t[u] = d[l]; return; } int mid = (l + r) / 2; build(u * 2,l,mid),build(u * 2 + 1,mid + 1,r); t[u] = max(t[u * 2],t[u * 2 + 1]); } int get(int u,int l,int r,int lx,int rx){ if(l >= lx && r <= rx) return t[u]; else if(l > rx || r < lx) return 0; int mid = (l + r) / 2; return max(get(u * 2,l,mid,lx,rx),get(u * 2 + 1,mid + 1,r,lx,rx)); } void solve(){ int n,m; cin >> n >> m; int a[n + 1]; stack <int> st; for(int i = 1; i <= n;i++){ cin >> a[i]; while(st.size() > 0 && a[st.top()] <= a[i]){ st.pop(); } if(st.size() > 0) last[i] = st.top(); if(last[i] != -inf) d[last[i]] = a[i] + a[last[i]]; st.push(i); } build(1,1,n); while(m--){ int l,r,k; cin >> l >> r >> k; int x = get(1,1,n,l,r); if(x <= k) cout << 1 << '\n'; else cout << 0 << '\n'; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); //freopen("promote.in", "r", stdin); //freopen("promote.out", "w", stdout); int t1 = 1; while(t1--){ 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...