记录编号 544027 评测结果 AAAAAAAAAA
题目名称 苦恼的Van 最终得分 100
用户昵称 Gravatar瑆の時間~無盡輪迴·林蔭 是否通过 通过
代码语言 C++ 运行时间 0.240 s
提交时间 2019-10-12 17:50:28 内存使用 11.96 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int sum[400001],mx[400001];
int n,m,a,b,c;
int val[100001];
int ls(int x)
{
	return x<<1;
}
int rs(int x)
{
	return x<<1|1;
}
void pushup(int x)
{
	sum[x]=sum[ls(x)]+sum[rs(x)];
	mx[x]=max(mx[ls(x)],mx[rs(x)]);
}
void build(int x,int l,int r)
{
	if(l==r)
	{
		sum[x]=val[l];
		mx[x]=sum[x];
		return ;
	}
	int mid=(l+r)>>1;
	build(ls(x),l,mid);
	build(rs(x),mid+1,r);
	pushup(x); 
}
void Mod(int x,int l,int r,int nl,int nr,int mod)
{
	if(l==r)
	{
		sum[x]%=mod;
		mx[x]%=mod;
		return;
	}
	if(mx[x]<mod)
		return;
	int mid=(l+r)>>1;
	if(nl<=mid)
		Mod(ls(x),l,mid,nl,nr,mod);
	if(nr>mid)
		Mod(rs(x),mid+1,r,nl,nr,mod);
	pushup(x);
}
int Query(int x,int l,int r,int nl,int nr)
{
	if(nl<=l&&nr>=r)
		return sum[x];
	int mid=(l+r)>>1;
	int res=0;
	if(nl<=mid)
	{
		res+=Query(ls(x),l,mid,nl,nr);
	}
	if(nr>mid)
	{
		res+=Query(rs(x),mid+1,r,nl,nr);
	}
	return res;
}
int LINYIN()
{
	freopen("van_modify.in","r",stdin);
	freopen("van_modify.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&val[i]);
	}
	build(1,1,n);
	for(int i=1;i<=m;i++)
	{
		scanf("%d",&a);
		if(a==0)
		{
			scanf("%d%d",&a,&b);
			printf("%d",Query(1,1,n,a,b));
		}
		else
		{
			scanf("%d%d%d",&a,&b,&c);
			Mod(1,1,n,a,b,c);
		}
	}
	return 0;
}
int LWH=LINYIN();
int main()
{
	;
}