求助!第二个点为什么一直WA
查看原帖
求助!第二个点为什么一直WA
391338
ATXTKS楼主2020/12/18 20:42
#include <stdio.h>
#include <math.h>
#define int long long
int a[200005],d[200005];
int n,q,s,t;
int sum=0;
int i,j;
int main()
{
	scanf("%lld%lld%lld%lld",&n,&q,&s,&t);
	scanf("%lld",&a[0]);
	for(i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		d[i]=a[i]-a[i-1];
		
		if(d[i]>0) sum-=s*d[i];
		else sum+=t*fabs(d[i]);
	}
	
	/*for(j=1;j<=n;j++){
			printf("%d ",d[j]);
		}
	printf("\n");*/
	//printf("%lld\n",sum);
	
	int right,left,point;
	for(i=1;i<=q;i++){
		scanf("%lld%lld%lld",&left,&right,&point);
		
		if(d[left]>0) sum+=s*d[left];
		else sum-=t*fabs(d[left]);
		
		if(right!=n){
		if(d[right+1]>0 ) sum+=s*d[right+1];
		else sum-=t*fabs(d[right+1]);//0 1 2 3     1 3 1    
									 //  2 1 1
		}
		
		d[left]+=point;
		if(right!=n)
		d[right+1]-=point;
		
		if(d[left]>0) sum-=s*d[left];
		else sum+=t*fabs(d[left]);
		
		if(right!=n){
		if(d[right+1]>0  ) sum-=s*d[right+1];
		else sum+=t*fabs(d[right+1]);
		}
		
		/*for(j=1;j<=n;j++){
			printf("%d ",d[j]);
		}
		printf("\n");*/
		
		printf("%lld\n",sum);
	}
    return 0;
}
2020/12/18 20:42
加载中...