답안 #998414

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
998414 2024-06-14T00:13:33 Z amirhoseinfar1385 원숭이와 사과 나무 (IZhO12_apple) C++17
100 / 100
40 ms 7084 KB
#include<bits/stdc++.h>
using namespace std;
int c;
struct node{
	int cl,cr;
	int res=0,f=0;
	node(){
		cl=cr=-1;
		res=f=0;
	}
}fakenode;
vector<node>all(400000);
int te=1;

int getl(int u){
	if(all[u].cl==-1){
		all[u].cl=te;
		te++;
	}
	return all[u].cl;
}

int getr(int u){
	if(all[u].cr==-1){
		all[u].cr=te;
		te++;
	}
	return all[u].cr;
}

void upd(int u,int l,int r,int tl,int tr){
	if(l>r||l>tr||r<tl||tl>tr||all[u].f==1){
		return ;
	}
	if(l>=tl&&r<=tr){
		all[u].cl=all[u].cr=-1;
		all[u].res=r-l+1;
		all[u].f=1;
		return ;
	}
	int m=(l+r)>>1;
	upd(getl(u),l,m,tl,tr);
	upd(getr(u),m+1,r,tl,tr);
	all[u].res=(all[getr(u)]).res+(all[getl(u)].res);
}

int pors(int u,int l,int r,int tl,int tr){
	if(l>r||l>tr||r<tl||tl>tr||all[u].res==0){
		return 0;
	}
	if((all[u].f)==1){
		return min(r,tr)-max(l,tl)+1;
	}
	int m=(l+r)>>1;
	return pors(getl(u),l,m,tl,tr)+pors(getr(u),m+1,r,tl,tr);
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	for(int asd=0;asd<t;asd++){
		int qq;
		cin>>qq;
		int l,r;
		cin>>l>>r;
		l+=c;
		r+=c;
		if(qq==1){
			int res=pors(0,0,1073741824-1,l,r);
			cout<<res<<"\n";
			c=res;
		}else{
			upd(0,0,1073741824-1,l,r);
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 6488 KB Output is correct
2 Correct 3 ms 6492 KB Output is correct
3 Correct 2 ms 6492 KB Output is correct
4 Correct 9 ms 6748 KB Output is correct
5 Correct 6 ms 6748 KB Output is correct
6 Correct 6 ms 6752 KB Output is correct
7 Correct 6 ms 6748 KB Output is correct
8 Correct 16 ms 6748 KB Output is correct
9 Correct 29 ms 6968 KB Output is correct
10 Correct 29 ms 7000 KB Output is correct
11 Correct 28 ms 7004 KB Output is correct
12 Correct 40 ms 6996 KB Output is correct
13 Correct 40 ms 6992 KB Output is correct
14 Correct 40 ms 7084 KB Output is correct
15 Correct 29 ms 7000 KB Output is correct
16 Correct 28 ms 7000 KB Output is correct
17 Correct 39 ms 7004 KB Output is correct
18 Correct 39 ms 6992 KB Output is correct
19 Correct 27 ms 7004 KB Output is correct
20 Correct 30 ms 7000 KB Output is correct