Submission #1257480

#TimeUsernameProblemLanguageResultExecution timeMemory
1257480DangerNoodle7591원숭이와 사과 나무 (IZhO12_apple)C++20
0 / 100
42 ms63052 KiB
#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 timeMemoryGrader output
Fetching results...