Submission #1249099

#TimeUsernameProblemLanguageResultExecution timeMemory
1249099MinbaevHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
892 ms41916 KiB
#include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define prc(n) fixed << setprecision(n) #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pi acos(-1); const int inf = 1e9+7; const int N = 1e6+5; int n, m, aaa[N], s, a[N]; vector<int>tree; int find(int l, int r, int lx, int rx, int x){ if(lx > r || rx < l) return 0; if(lx >= l && rx <= r) return tree[x]; int m = (lx + rx)/2; return max(find(l, r, lx, m, x*2), find(l, r, m+1, rx, x*2+1)); } void update(int i, int v, int lx, int rx, int x){ if(lx == rx){ tree[x] = v; return; } int m = (lx + rx)/2; if(i <= m) update(i, v, lx, m, x*2); else update(i, v, m+1, rx, x*2+1); tree[x] = max(tree[x*2], tree[x*2+1]); } void print(){ for(int i=1;i<2*s;i++) cout<<tree[i]<<" "; cout<<endl; } void solve(){ cin>>n>>m; s = 2; while(s < n) s<<=1; tree.resize(s*2, 0); for(int i=0;i<n;i++) cin>>a[i]; vector<pair<pii, pii>> vv; for(int i=0;i<m;i++){ int l, r, k; cin>>l>>r>>k; vv.pb({{r, l}, {k, i}}); } sort(all(vv)); vector<pii>ans; int last = 0; for(int i=0;i<n;i++){ while(!ans.empty() && ans.back().ff < a[i]) ans.pop_back(); bool flag = 0; if(ans.empty()){ ans.pb({a[i], i+1}); flag = 1; } int x = ans.back().ff, y = ans.back().ss; if(!flag) ans.pb({a[i], i+1}); if(x > a[i]) update(y, a[i] + x, 1, s, 1); while(last < m && vv[last].ff.ff == i+1){ int res = find(vv[last].ff.ss, vv[last].ff.ff, 1, s, 1); aaa[vv[last].ss.ss] = (vv[last].ss.ff >= res); last++; } if(last == m) break; } //print(); for(int i=0;i<m;i++) cout<<aaa[i]<<"\n"; } signed main(){ fastios int t = 1; //cin>>t; while(t--) solve(); 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...