Submission #1216810

#TimeUsernameProblemLanguageResultExecution timeMemory
1216810badge881Monkey and Apple-trees (IZhO12_apple)C++20
100 / 100
265 ms130524 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int mxN = 200005; const int N = 1e9; int q; int idx = 0; int root, ls[50 * mxN], rs[50 * mxN], bor[50 * mxN], lenj[50 * mxN]; void propagate(int v, int tl, int tr) { if (lenj[v] != 0) { bor[v] = (tr - tl + 1); if (tl != tr) { if (!ls[v]) ls[v] = ++idx; lenj[ls[v]] = lenj[v]; if (!rs[v]) rs[v] = ++idx; lenj[rs[v]] = lenj[v]; } lenj[v] = 0; } } void lazyupd(int &v, int tl, int tr, int l, int r, int val) { if (!v) v = ++idx; propagate(v, tl, tr); if (tl > tr || l > tr || tl > r) return; if (tl >= l && tr <= r) { lenj[v] = val; propagate(v, tl, tr); return; } int mid = (tl + tr) / 2; lazyupd(ls[v], tl, mid, l, r, val); lazyupd(rs[v], mid + 1, tr, l, r, val); bor[v] = bor[ls[v]] + bor[rs[v]]; } int kverif(int v, int tl, int tr, int l, int r) { propagate(v, tl, tr); if (!v || tl > r || l > tr) return 0; if (tl >= l && tr <= r) return bor[v]; int mid = (tl + tr) / 2; return kverif(ls[v], tl, mid, l, r) + kverif(rs[v], mid + 1, tr, l, r); } int main() { scanf("%d", &q); int last = 0; while (q--) { int t, l, r; scanf("%d %d %d", &t, &l, &r); l += last; r += last; if (t == 1) { last = kverif(root, 1, N, l, r); printf("%d\n", last); } else lazyupd(root, 1, N, l, r, 1); } return 0; }

Compilation message (stderr)

apple.cpp: In function 'int main()':
apple.cpp:62:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |     scanf("%d", &q);
      |     ~~~~~^~~~~~~~~~
apple.cpp:67:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   67 |         scanf("%d %d %d", &t, &l, &r);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...