제출 #384626

#제출 시각아이디문제언어결과실행 시간메모리
384626eyangch원숭이와 사과 나무 (IZhO12_apple)C++17
0 / 100
490 ms262148 KiB
#include <bits/stdc++.h> #define endl "\n" #define eat cin #define moo cout using namespace std; struct segt{ int l, r; segt *a, *b; int val, lazy; segt(int vl, int vr){ l = vl, r = vr; a = b = NULL; if(l < r){ val = 0; lazy = 0; } } void c_child(){ a = new segt(l, (l+r)/2), b = new segt((l+r)/2+1, r); } void push(){ if(!a) c_child(); if(lazy == 0) return; val = (r - l + 1) * lazy; if(l < r){ a->lazy = lazy; b->lazy = lazy; } lazy = 0; } void upd(int vl, int vr){ push(); if(l > r || l > vr || r < vl) return; if(l >= vl && r <= vr){ lazy = 1; push(); }else{ a->upd(vl, vr); b->upd(vl, vr); val = a->val + b->val; } } int qry(int vl, int vr){ push(); if(l > r || l > vr || r < vl) return 0; if(l >= vl && r <= vr) return val; return a->qry(vl, vr) + b->qry(vl, vr); } }; segt *s; int M; int32_t main(){ eat.tie(0) -> sync_with_stdio(0); s = new segt(1, 1e9); eat >> M; int c = 0; for(int i = 0; i < M; i++){ int d, x, y; eat >> d >> x >> y; if(d == 1){ c = s->qry(x+c, y+c); moo << c << endl; }else{ s->upd(x+c, y+c); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...