72分求助
查看原帖
72分求助
470149
yuanjiayu123楼主2021/2/1 20:16

5至10以及13过不了

#include<stdio.h>
int main()
{
	long long n,i,m,p1,s1,s2,p2,sum1=0,sum2=0,c[1000000],d[1000000],max;
	scanf("%lld\n",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lld",&c[i]);
	}
	scanf("\n");
	scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
	for(i=0;i<m-1;i++)
	{
		sum1+=(m-i-1)*c[i];	
	}
	for(i=m;i<n;i++)
	{
		sum2+=(i+1-m)*c[i];
	}
	if(p1<m)
	{	
		sum1+=(m-p1)*s1;
	}
	else if(p1>m)
	{
		sum2+=(p1-m)*s1;
	}
	if(sum1==sum2)
	{
		p2=m;
	}
	else if(sum1>sum2)
	{
		d[m]=sum2+s2-sum1>0?sum2+s2-sum1:sum1-sum2-s2;
		for(i=m+1,max=m;i<n;i++)
		{
			d[i]=sum2+(i+1-m)*s2-sum1>0?sum2+(i+1-m)*s2-sum1:sum1-sum2-(i+1-m)*s2;
			if(d[i]<d[i-1])
			{
				max=i;
			}
		}
		p2=max+1;
	}
	else
	{
		d[0]=sum1+(m-1)*s2-sum2>0?sum1+(m-1)*s2-sum2:sum2-sum1-(m-1)*s2;
		for(i=1,max=0;i<m-1;i++)
		{
			d[i]=sum1+(m-i-1)*s2-sum2>0?sum1+(m-i-1)*s2-sum2:sum2-sum1-(m-i-1)*s2;	
			if(d[i]<d[i-1])
			{
				max=i;
			}
		}
		p2=max+1;
		
	}
	printf("%lld",p2);
	return 0;
}
2021/2/1 20:16
加载中...