Submission #887411

#TimeUsernameProblemLanguageResultExecution timeMemory
887411Zero_OPMonkey and Apple-trees (IZhO12_apple)C++14
100 / 100
196 ms55752 KiB
#include<bits/stdc++.h> using namespace std; #define range(v) begin(v), end(v) #define compact(v) v.erase(unique(range(v)), end(v)) template<class T> bool minimize(T& a, T b){ if(a > b) return a = b, true; return false; } template<class T> bool maximize(T& a, T b){ if(a < b) return a = b, true; return false; } typedef long long ll; typedef unsigned long long ull; typedef long double ld; const int N = 1e7 + 5; int timerNodes = 0, lc[N], rc[N], st[N]; bitset<N> lzy; void apply(int cur, int l, int r){ st[cur] = (r - l + 1); lzy[cur] = true; } void pushDown(int cur, int l, int r, int mid){ if(lzy[cur]){ apply(lc[cur], l, mid); apply(rc[cur], mid + 1, r); lzy[cur] = false; } } void extend(int cur){ if(lc[cur] == 0) lc[cur] = ++timerNodes; if(rc[cur] == 0) rc[cur] = ++timerNodes; } void update(int cur, int l, int r, int u, int v){ if(v < l or u > r) return; if(u <= l and r <= v){ apply(cur, l, r); } else{ int mid = l + r >> 1; extend(cur); pushDown(cur, l, r, mid); update(lc[cur], l, mid, u, v); update(rc[cur], mid + 1, r, u, v); st[cur] = st[lc[cur]] + st[rc[cur]]; } } int query(int cur, int l, int r, int u, int v){ if(v < l or u > r) return 0; if(u <= l and r <= v){ return st[cur]; } int mid = l + r >> 1; extend(cur); pushDown(cur, l, r, mid); return query(lc[cur], l, mid, u, v) + query(rc[cur], mid + 1, r, u, v); } void Zero_OP(){ int q, c = 0, lim = 1e9; cin >> q; while(q--){ int d, x, y; cin >> d >> x >> y; x += c, y += c; if(d == 1){ c = query(0, 1, lim, x, y); cout << c << '\n'; } else{ update(0, 1, lim, x, y); } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #define task "antuvu" if(fopen(task".inp", "r")){ freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } Zero_OP(); return 0; }

Compilation message (stderr)

apple.cpp: In function 'void update(int, int, int, int, int)':
apple.cpp:51:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   51 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'int query(int, int, int, int, int)':
apple.cpp:65:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   65 |   int mid = l + r >> 1;
      |             ~~^~~
apple.cpp: In function 'int main()':
apple.cpp:94:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   94 |     freopen(task".inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:95:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   95 |     freopen(task".out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...