#include <bits/stdc++.h>
using namespace std;
struct node {
int sum, lazy, tl, tr, l, r;
node() : sum(0), lazy(0), l(-1), r(-1) {}
};
const int MAXN = 123456;
node segtree[64*maxn];
int cnt = 2;
void push_lazy(int n){
if(segtree[n].lazy){
segtree[n].sum = segtree[n].tr - segtree[n].tl + 1;
int mid = (segtree[n].tr + segtree[n].tl) /2;
if(segtree[n].l == -1){
segtree[n].l = cnt++;
segtree[segtree[n].l].tl = segtree[n].tl;
segtree[segtree[n].l].tr = mid;
}
if(segtree[n].r == -1){
segtree[n].r = cnt++;
segtree[segtree[n].r].tl = mid +1;
segtree[segtree[n].r].tr = segtree[n].tr;
}
//cout <<n<<": " <<segtree[n].l <<", "<<segtree[n].r<<":"<<segtree[segtree[n].l].l <<", "<<segtree[segtree[n].r].l<<endl;
segtree[segtree[n].l].lazy = segtree[segtree[n].r].lazy = 1;
segtree[n].lazy = 0;
}
}
void update(int n, int l, int r){
//cout << n << ": "<<l<<", "<<r<<"\t"<<segtree[n].l<<", "<<segtree[n].r<<"\t"<<segtree[n].tl<<", "<<segtree[n].tr<<endl;
//cout << cnt<<endl;
//if(cnt > 10) return;
push_lazy(n);
if(segtree[n].tl == l && segtree[n].tr == r){
segtree[n].lazy = 1;
push_lazy(n);
}
else{
int mid = (segtree[n].tl + segtree[n].tr )/2;
if(segtree[n].l == -1){
segtree[n].l = cnt++;
segtree[segtree[n].l].tl = segtree[n].tl;
segtree[segtree[n].l].tr = mid;
}
if(segtree[n].r == -1){
segtree[n].r = cnt++;
segtree[segtree[n].r].tl = mid+1;
segtree[segtree[n].r].tr = segtree[n].tr;
}
if( l <= mid){
//cout << n<<"->"<<segtree[n].l<<endl;
update(segtree[n].l, l, min(mid, r));
}
if( r > mid){
update(segtree[n].r, max(l, mid+1), r);
}
push_lazy(segtree[n].l);
push_lazy(segtree[n].r);
segtree[n].sum = segtree[segtree[n].l].sum + segtree[segtree[n].r].sum;
}
}
int query(int n, int l, int r){
//cout << n << ": "<<l<<", "<<r<<"\t"<<segtree[n].l<<", "<<segtree[n].r<<endl;
push_lazy(n);
if(segtree[n].tl == l && segtree[n].tr == r){
return segtree[n].sum;
}
else{
int mid = (segtree[n].tl + segtree[n].tr )/2;
if(segtree[n].l == -1){
segtree[n].l = cnt++;
segtree[segtree[n].l].tl = segtree[n].tl;
segtree[segtree[n].l].tr = mid;
}
if(segtree[n].r == -1){
segtree[n].r = cnt++;
segtree[segtree[n].r].tl = mid+1;
segtree[segtree[n].r].tr = segtree[n].tr;
}
int ans = 0;
if( l <= mid){
ans+=query(segtree[n].l, l, min(mid, r));
}
if( r > mid){
ans+=query(segtree[n].r, max(l, mid+1), r);
}
return ans;
}
}
int main(){
int m; cin >> m;
segtree[1].sum = 0;
segtree[1].lazy = 0;
segtree[1].tl =1;
segtree[1].tr = 1e9;
int c = 0;
while(m--){
int d,x,y; cin >> d >> x >> y;
if(d == 2){
update(1, x +c, y +c);
}else{
c = query(1, x +c, y+c);
cout << c <<endl;
}
}
}
Compilation message
apple.cpp:12:17: error: 'maxn' was not declared in this scope
12 | node segtree[64*maxn];
| ^~~~
apple.cpp: In function 'void push_lazy(int)':
apple.cpp:17:5: error: 'segtree' was not declared in this scope
17 | if(segtree[n].lazy){
| ^~~~~~~
apple.cpp: In function 'void update(int, int, int)':
apple.cpp:44:5: error: 'segtree' was not declared in this scope
44 | if(segtree[n].tl == l && segtree[n].tr == r){
| ^~~~~~~
apple.cpp: In function 'int query(int, int, int)':
apple.cpp:80:5: error: 'segtree' was not declared in this scope
80 | if(segtree[n].tl == l && segtree[n].tr == r){
| ^~~~~~~
apple.cpp: In function 'int main()':
apple.cpp:113:2: error: 'segtree' was not declared in this scope
113 | segtree[1].sum = 0;
| ^~~~~~~