玄关:why RE on #4
查看原帖
玄关:why RE on #4
664779
llxsmy_forever楼主2024/4/26 13:30
#include<bits/stdc++.h>
#define lc (p<<1)
#define rc (p<<1|1)
using namespace std;
const int N=2e5+5,P=10007;
struct Seg{int l,r,c;}tr[N<<2];
struct Q{int op,x,y;}qry[N];
int n,m,K,a[N],ans[N];
void bt(int p,int l,int r){
	tr[p]={l,r,0};
	if(l==r)return;
	int mid=l+r>>1;
	bt(lc,l,mid);bt(rc,mid+1,r);
}
void change(int p,int l,int r,int k){
	if(l<=tr[p].l&&r>=tr[p].r){
		tr[p].c=(tr[p].c+k)%P;
		return;
	}
	int mid=tr[p].l+tr[p].r>>1;
	if(l<=mid)change(lc,l,r,k);
	if(r>mid)change(rc,l,r,k);
}
int solve(int p,int x){
	if(tr[p].l==tr[p].r)return tr[p].c;
	tr[lc].c=(tr[lc].c+tr[p].c)%P;
	tr[rc].c=(tr[rc].c+tr[p].c)%P;
	tr[p].c=0;
	int mid=tr[p].l+tr[p].r>>1;
	if(x<=mid)return solve(lc,x);
	return solve(rc,x);
}
int main(){
	int n,m,K;scanf("%d%d%d",&n,&m,&K);
	for(int i=1;i<=K;i++){
		int x;scanf("%d",&x);
		a[x]=(a[x]+1)%P;
	}
	for(int i=1;i<=m;i++){
		int op,x,y;scanf("%d%d%d",&op,&x,&y);
		qry[i]={op,x,y};
	}
	bt(1,1,n);
	for(int i=m;i>=1;i--){
		if(qry[i].op==1)change(1,i,i,a[i]);
		else{
			int t=solve(1,i);
			change(1,qry[i].x,qry[i].y,(t+a[i])%P);
		}
	}
	for(int i=1;i<=m;i++){
		if(qry[i].op==1){
			(ans[qry[i].x]+=solve(1,i)*qry[i].y%P)%=P;
		}
	}
	for(int i=1;i<=n;i++)printf("%d ",ans[i]);
	return 0;
}
2024/4/26 13:30
加载中...