求助RE92tps
查看原帖
求助RE92tps
461012
dyyzy楼主2022/8/9 20:47

已经贡献7发92tps了

所以#2为什么下不下来qwq

#include<iostream>
using namespace std;
const int N=1000005;
struct cjhxds{
	int lc,rc,l,r,data;
	int add;
}t[N*21];
int total,top,root[N];
int n,m,a[N];
inline int make(int x){
	top++;
	t[top]=t[x];
	return top;
}
inline int build(int p,int l,int r){
	p=++top;
	if(l==r){t[p].data=a[l];return p;}
	int mid=(l+r)>>1;
	t[p].lc=build(t[p].lc,l,mid);
	t[p].rc=build(t[p].rc,mid+1,r);
	return p;
}
inline int update(int p,int l,int r,int x,int y){
	p=make(p);
	if(l==r){t[p].data=y;return p;}
	int mid=(l+r)>>1;
	if(x<=mid) t[p].lc=update(t[p].lc,l,mid,x,y);
	if(x>mid) t[p].rc=update(t[p].rc,mid+1,r,x,y);
	return p;
}
inline int ask(int p,int l,int r,int x){
	if(l==r)return t[p].data;
	int mid=(l+r)>>1;
	if(x<=mid)return ask(t[p].lc,l,mid,x);
	if(x>mid)return ask(t[p].rc,mid+1,r,x);
}
int main(){
	std::ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	root[0]=build(0,1,n);
	for(int i=1;i<=m;i++){
		int bb,pd,x,v;cin>>bb>>pd>>x;
		if(pd==1){
			cin>>v;
			root[i]=update(root[bb],1,n,x,v);
		}
		if(pd==2){
			cout<<ask(root[bb],1,n,x)<<endl;
			root[i]=root[bb];
		}
	}
	return 0;
}
2022/8/9 20:47
加载中...