#include <bits/stdc++.h>
using namespace std;
#define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define endl '\n'
#define int long long int
#define ll long long
#define pb push_back
#define p push
#define ins insert
#define f first
#define s second
#define N 1000005
#define M 11
#define mod 998244353
#define big 1000000000000000000
vector<int> seg(4 * N, 0);
vector<int> lazy(4 * N, 0);
void ppush(int x,int l,int r){
if(lazy[x]==0)return;
lazy[x]=0;
seg[x]=(r-l+1);
if(l!=r){
int mid=(l+r)/2;
lazy[x*2]=(mid-l+1);
lazy[x*2+1]=(r-(mid+1)+1);
}
}
void up(int x,int l,int r,int s,int e){
if(l>r)return;
ppush(x,l,r);
if(seg[x]==(r-l+1))return;
if(l>e||r<s)return;
if(s<=l&&r<=e){
lazy[x]=(r-l+1);
ppush(x,l,r);
return;
}
int mid=(l+r)/2;
up(x*2,l,mid,s,e);up(x*2+1,mid+1,r,s,e);
seg[x]=seg[x*2]+seg[x*2+1];
}
int qua(int x,int l,int r,int s,int e){
if(l>r||r<s||e<l)return 0;
ppush(x,l,r);
if(s<=l&&r<=e)return seg[x];
int mid=(l+r)/2;
return qua(x*2,l,mid,s,e)+qua(x*2+1,mid+1,r,s,e);
}
signed main(){
lalala;
int q;cin>>q;
int c=0;
while(q--){
int ok,x,y;cin>>ok>>x>>y;
x+=c;
y+=c;
if(ok==1){
int ans=qua(1,1,N,x,y);
cout<<ans<<endl;
c=ans;
continue;
}
up(1,1,N,x,y);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |