Submission #644005

#TimeUsernameProblemLanguageResultExecution timeMemory
644005ymmHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
64 / 100
3024 ms260880 KiB
#include <bits/stdc++.h> #define Loop(x,l,r) for (ll x = (l); x < (r); ++x) #define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x) typedef long long ll; typedef std::pair<int, int> pii; typedef std::pair<ll , ll > pll; using namespace std; const int N = 1'000'010; struct node { vector<int> srt; int mxs; } seg[N<<2]; int a[N]; int n; void build(int i=0, int b=0, int e=n) { if (e-b == 1) { seg[i].srt = {a[b]}; seg[i].mxs = 0; return; } build(2*i+1, b, (b+e)/2); build(2*i+2, (b+e)/2, e); seg[i].mxs = max(seg[2*i+1].mxs, seg[2*i+2].mxs); auto it = lower_bound(seg[2*i+2].srt.begin(), seg[2*i+2].srt.end(), seg[2*i+1].srt.back()); if (it != seg[2*i+2].srt.begin()) seg[i].mxs = max(seg[i].mxs, seg[2*i+1].srt.back() + *--it); seg[i].srt.resize(e-b); merge(seg[2*i+1].srt.begin(), seg[2*i+1].srt.end(), seg[2*i+2].srt.begin(), seg[2*i+2].srt.end(), seg[i].srt.begin()); } pii get(int l, int r, int pre=0, int i=0, int b=0, int e=n) { if (l <= b && e <= r) { int mxs = seg[i].mxs; auto it = lower_bound(seg[i].srt.begin(), seg[i].srt.end(), pre); if (it != seg[i].srt.begin()) mxs = max(mxs, pre + *--it); int mx = max(pre, seg[i].srt.back()); return {mx, mxs}; } if (r <= b || e <= l) return {0, 0}; auto [pre2, ans1] = get(l, r, pre , 2*i+1, b, (b+e)/2); auto [pre3, ans2] = get(l, r, pre2, 2*i+2, (b+e)/2, e); return {pre3, max(ans1, ans2)}; } int main() { cin.tie(0) -> sync_with_stdio(false); int q; cin >> n >> q; Loop (i,0,n) cin >> a[i]; build(); Loop (i,0,q) { int l, r, k; cin >> l >> r >> k; --l; //int mx=0, mxs=0; //Loop (i,l,r) { // if (a[i] >= mx) // mx = a[i]; // else // mxs = max(a[i]+mx, mxs); //} int x = get(l, r).second; cout << (x <= k) << '\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...