过不了样例不知道是哪里有问题求改(玄关)
查看原帖
过不了样例不知道是哪里有问题求改(玄关)
1199534
ycy1124楼主2024/4/9 20:20
#include<bits/stdc++.h>
using namespace std;
int a[200001];
void read(int &x)
{
	int f=1;
	x=0;
	char ch=getchar();
	if(ch<'0'||ch>'9')
	{
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x*=10;
		x+=ch-'0';
		ch=getchar();
	}
	x*=f;
}
int main()
{
	long long wd=0;
	int n,q,s,t;
	read(n);
	read(q);
	read(s);
	read(t);
	for(int i=0,x=0;i<=n;i++)
	{
		read(a[i]);
		a[i]-=x;
		x+=a[i];
		//cout<<a[i]<<' ';
		if(a[i]<0)
		{
			wd-=a[i]*s;
		}
		else if(a[i]>0)
		{
			wd-=a[i]*t; 
		}
	}
	//cout<<wd<<endl;
	//cout<<endl;
	for(int i=1;i<=q;i++)
	{
		int l,r,x,ly,ry;
		read(l);
		read(r);
		read(x);
		ly=a[l];
		ry=a[r+1];
		a[l]+=x;
		a[r+1]-=x;
		ly-=a[i];
		ry-=a[r+1];
		if(ly<0)
		{
			wd-=ly*s;
		}
		else if(ly>0)
		{
			wd-=ly*t; 
		}
		if(ry<0)
		{
			wd-=ry*s;
		}
		else if(ry>0)
		{
			wd-=ry*t; 
		}
		cout<<wd<<endl;
	}
	return 0;
}
2024/4/9 20:20
加载中...