写线段树的时候被困惑到的,前者可以通过,后者则不行,求大佬指点
long long a1,b,c,d,e,f;
cin>>n>>m;
for(long long i=1;i<=n;i++)
scanf("%lld",&a[i]);
build(1,1,n);
while(m--)
{
scanf("%lld",&a1);
switch(a1)
{
case 1:{
scanf("%lld%lld%lld",&b,&c,&d);
update(b,c,1,n,1,d);
break;
}
case 2:{
scanf("%lld%lld",&e,&f);
printf("%lld\n",query(e,f,1,n,1));
break;
}
}
}
long long a1,b,c,d,e,f;
cin>>n>>m;
for(long long i=1;i<=n;i++)
scanf("%lld",&a[i]);
build(1,1,n);
while(m--)
{
scanf("%lld",&a1);
if(a1==1){
scanf("%lld%lld%lld",&b,&c,&d);
update(b,c,1,n,1,d);
break;
}
else{
scanf("%lld%lld",&e,&f);
printf("%lld\n",query(e,f,1,n,1));
break;//输出区间和
}
}
return 0;