Submission #644003

#TimeUsernameProblemLanguageResultExecution timeMemory
644003ymmHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
64 / 100
502 ms262144 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<ll> srt; ll mxs; } seg[N<<2]; ll 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()); } pll get(int l, int r, ll pre=0, int i=0, int b=0, int e=n) { if (l <= b && e <= r) { ll 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); ll 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; ll 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'; } }

Compilation message (stderr)

sortbooks.cpp: In function 'int main()':
sortbooks.cpp:64:6: warning: unused variable 'mx' [-Wunused-variable]
   64 |   ll mx=0, mxs=0;
      |      ^~
sortbooks.cpp:64:12: warning: unused variable 'mxs' [-Wunused-variable]
   64 |   ll mx=0, mxs=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...