제출 #909684

#제출 시각아이디문제언어결과실행 시간메모리
909684dsyz원숭이와 사과 나무 (IZhO12_apple)C++17
0 / 100
450 ms262144 KiB
#include <bits/stdc++.h> using namespace std; using ll = int; #define MAXN (1000005) struct node{ ll s,e,m,val; bool lazy; node *l = nullptr, *r = nullptr; node(ll S,ll E){ s = S; e = E; m = (s + e) / 2; val = 0; lazy = 0; } void create(){ if(l == nullptr && s != e){ l = new node(s,m); r = new node(m + 1,e); } } void propagate(){ create(); if(lazy == 0) return; val = lazy * (e - s + 1); if(s != e){ l->lazy = lazy; r->lazy = lazy; } lazy = 0; } void update(ll S,ll E,ll v){ propagate(); if(s == S && e == E) lazy = v; else{ if(E <= m) l->update(S,E,v); else if(S > m) r->update(S,E,v); else l->update(S,m,v),r->update(m + 1,E,v); l->propagate(),r->propagate(); val = l->val + r->val; } } ll query(ll S,ll E){ propagate(); if(s == S && e == E) return val; else if(S > m) return r->query(S,E); else if(E <= m) return l->query(S,E); else return l->query(S,m) + r-> query(m + 1,E); } } *root; int main() { ios_base::sync_with_stdio(false);cin.tie(0); ll M; cin>>M; root = new node(0,1e9 + 5); ll D, X, Y, C = 0; while(M--){ cin>>D>>X>>Y; X += C, Y += C; if(D == 1){ //query C = root -> query(X,Y); cout<<C<<'\n'; }else if(D == 2){ //update root -> update(X,Y,1); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...