Submission #885944

#TimeUsernameProblemLanguageResultExecution timeMemory
885944dostsMonkey and Apple-trees (IZhO12_apple)C++17
100 / 100
104 ms1008 KiB
#include <bits/stdc++.h> #pragma GCC optimize "O3,unroll-loops" using namespace std; #define sp << " " << //#define int long long #define vi vector<int> #define F(xxx,yyy) for (int xxx=1;xxx<=yyy;xxx++) #define pii pair<int,int> #define pb push_back const int N = 2e5+1; struct Node { Node* c[2]; int sum = 0,l,r; bool lazy = 0; inline Node(int a,int b) { c[0] = c[1] = NULL; l = a; r = b; } inline void apply() { if (lazy) sum = r-l+1; } inline void extend() { int m = (l+r) >> 1; if (c[0]==NULL) c[0] = new Node(l,m); if (c[1]==NULL) c[1] = new Node(m+1,r); } inline void push() { if (l^r) { extend(); c[0]->lazy |= lazy; c[1]->lazy |= lazy; } } inline void upd(int L,int R) { apply(); if (lazy) return; if (l > R || r < L) return; if (l >= L && r <= R) { lazy = 1; apply(); push(); return; } push(); int m = (l+r) >> 1; c[0]->upd(L,R),c[1]->upd(L,R); sum = c[0]->sum+c[1]->sum; } inline int query(int L,int R) { apply(); if (l > R || r < L) return 0; if (l >= L && r <= R) return sum; if(lazy){ if (L >= l && R <= r) return R-L+1; else if (L <= l) return R-l+1; else return r-L+1; } push(); return c[0]->query(L,R)+c[1]->query(L,R); } }; void solve() { int q; cin >> q; int c = 0; Node* root = new Node(1,1e9); while (q--) { int t,l,r; cin >> t >> l >> r; if (t == 1) { c = root->query(l+c,r+c); cout << c << endl; } else root->upd(l+c,r+c); } } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Local freopen("in","r",stdin); freopen("out","w",stdout); #endif int t = 1; //cin >> t; F(i,t) solve(); }

Compilation message (stderr)

apple.cpp: In member function 'void Node::upd(int, int)':
apple.cpp:49:7: warning: unused variable 'm' [-Wunused-variable]
   49 |   int m = (l+r) >> 1;
      |       ^
#Verdict Execution timeMemoryGrader output
Fetching results...