Submission #1086279

#TimeUsernameProblemLanguageResultExecution timeMemory
1086279Flan312Monkey and Apple-trees (IZhO12_apple)C++17
100 / 100
260 ms139628 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define eb emplace_back #define task "" #define fast ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define nx freopen (task".inp","r",stdin), freopen (task".out","w",stdout); #define fi first #define se second #define pii pair <int, int> #define tii tuple <int, int, int> using namespace std; struct node { int cnt; bool lazy; node *l, *r; node(int cnt = 0, bool lazy = 0) : cnt(cnt), lazy(lazy) { l = r = nullptr; } }; #define check(x) if (x == nullptr) x = new node(); void assign(node *root, int l, int r, int val) { if (!val) return; root -> cnt = r - l + 1; root -> lazy = 1; } void down(node *root, int l, int r) { check(root -> l); check(root -> r); if (!root -> lazy) return; int mid = l + r >> 1; assign(root -> l, l, mid, root -> lazy); assign(root -> r, mid + 1, r, root -> lazy); root -> lazy = 0; } void update(node *root, int l, int r, int u, int v) { if (l > v || r < u) return; if (l >= u && r <= v) return assign(root, l, r, v); down(root, l, r); int mid = l + r >> 1; if (u <= mid) update(root -> l, l, mid, u, v); if (mid < v) update(root -> r, mid + 1, r, u, v); root -> cnt = (root -> l -> cnt) + (root -> r -> cnt); } int query(node *root, int l, int r, int u, int v) { if (root == nullptr) return 0; if (l > v || r < u) return 0; if (l >= u && r <= v) return root -> cnt; down(root, l, r); int mid = l + r >> 1; int res = 0; if (u <= mid) res += query(root -> l, l, mid, u, v); if (mid < v) res += query(root -> r, mid + 1, r, u, v); return res; } node *root = new node(); int t; int main() { if (ifstream(task".inp")) nx fast cin >> t; int c = 0; while(t--) { int type, l, r; cin >> type >> l >> r; l += c, r += c; if (type == 1) { c = query(root, 1, 1e9, l, r); cout << c << '\n'; } else update(root, 1, 1e9, l, r); } }

Compilation message (stderr)

apple.cpp: In function 'void down(node*, int, int)':
apple.cpp:37:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   37 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'void update(node*, int, int, int, int)':
apple.cpp:48:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   48 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'int query(node*, int, int, int, int)':
apple.cpp:60:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   60 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'int main()':
apple.cpp:7:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    7 | #define nx freopen (task".inp","r",stdin), freopen (task".out","w",stdout);
      |            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
apple.cpp:70:31: note: in expansion of macro 'nx'
   70 |     if (ifstream(task".inp")) nx
      |                               ^~
apple.cpp:7:52: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    7 | #define nx freopen (task".inp","r",stdin), freopen (task".out","w",stdout);
      |                                            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:70:31: note: in expansion of macro 'nx'
   70 |     if (ifstream(task".inp")) nx
      |                               ^~
#Verdict Execution timeMemoryGrader output
Fetching results...