Submission #1183174

#TimeUsernameProblemLanguageResultExecution timeMemory
1183174AlishHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
1160 ms67612 KiB
#include<bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef long double ld; #define F first #define S second #define pb push_back #define endl '\n' #define Mp make_pair #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " = " << x << endl; #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("input19.txt" , "r" , stdin) ; const int N = 1e6+23; int seg[4*N]; int a[N], L[N]; int n, q; vector<pair<int, pii> > Q[N]; int ans[N]; void upd(int i, int x, int l=1, int r=n+1, int ind=0){ if(r-l==1){ seg[ind]=max(seg[ind], x); return; } int mid=(r+l)>>1; if(i<mid) upd(i, x, l, mid, 2*ind+1); else upd(i, x, mid, r, 2*ind+2); seg[ind]=max(seg[2*ind+1], seg[2*ind+2]); } int get(int lx, int rx, int l=1, int r=n+1, int ind=0){ if(lx>=r || rx<=l) return 0; if(lx<=l && rx>=r) return seg[ind]; int mid=(r+l)>>1; return max(get(lx, rx, l, mid, 2*ind+1), get(lx, rx, mid, r, 2*ind+2)); } int main() { fast_io cin>>n>>q; for (int i=1; i<=n; i++) cin>>a[i]; vector<int> st; for (int i=1; i<=n; i++){ while(!st.empty() && a[st.back()]<=a[i]) st.pop_back(); if(!st.empty()) L[i]=st.back(); st.pb(i); } for (int i=0; i<q; i++){ int l, r, k; cin>>l>>r>>k; Q[r].pb({i, {l, k}}); } for (int i=1; i<=n; i++){ if(L[i]) upd(L[i], a[L[i]]+a[i]); for (auto pp: Q[i]) ans[pp.F]=(pp.S.S>=get(pp.S.F, i+1)); } for (int i=0; i<q; i++) cout<<ans[i]<<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...