Submission #21879

#TimeUsernameProblemLanguageResultExecution timeMemory
21879ulnaMonkey and Apple-trees (IZhO12_apple)C++11
100 / 100
466 ms138244 KiB
#include <bits/stdc++.h> using namespace std; // why am I so weak int m; struct node { int sum; int lazy; node *left, *right; node(int sum) : sum(sum), lazy(-1) {left = right = NULL;} } *root = new node(0); void push(node *u, int x, int y) { if (u->lazy < 0) return; int mid = (x + y) >> 1; u->left->lazy = u->right->lazy = 1; u->left->sum = mid - x + 1; u->right->sum = y - mid; u->lazy = -1; } int query(node *u, int x, int y, int l, int r) { if (!u) return 0; if (l > y || r < x) return 0; if (l <= x && y <= r) return u->sum; int mid = (x + y) >> 1; if (!u->left) u->left = new node(0); if (!u->right) u->right = new node(0); push(u, x, y); return query(u->left, x, mid, l, r) + query(u->right, mid + 1, y, l, r); } void update(node *u, int x, int y, int l, int r) { if (l > y || r < x) return; if (l <= x && y <= r) { u->sum = y - x + 1; u->lazy = 1; return; } int mid = (x + y) >> 1; if (!u->left) u->left = new node(0); if (!u->right) u->right = new node(0); push(u, x, y); update(u->left, x, mid, l, r); update(u->right, mid + 1, y, l, r); u->sum = u->left->sum + u->right->sum; } int main() { scanf("%d", &m); int c = 0; while (m--) { int ope, x, y; scanf("%d %d %d", &ope, &x, &y); x += c, y += c; if (ope == 1) { printf("%d\n", c = query(root, 1, (int)1e9, x, y)); } else { update(root, 1, (int)1e9, x, y); } } return 0; }

Compilation message (stderr)

apple.cpp: In function 'int main()':
apple.cpp:65:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &m);
                 ^
apple.cpp:71:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d", &ope, &x, &y);
                                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...