样例过了,64分,dev里有警告【-Woverflow】
查看原帖
样例过了,64分,dev里有警告【-Woverflow】
107807
liweiqing楼主2020/7/17 12:14
#include<bits/stdc++.h>
using namespace std;
long long abs(long long x,long long y)
{
	if(x>=y) return x-y;
	return y-x;
}
long long m,p1,s1,s2,a[1000005];
int n; 
int main()
{
	long long min=1e19,where;
    long long sum1=0,sum2=0;
    long long cnt1,cnt2;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
    	scanf("%lld",&a[i]);
	}
	scanf("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
	a[p1]+=s1;
	for(int i=1;i<=n;i++)
	{
		if(i<m)
			sum1+=(m-i)*a[i];
		else if(m<i)
			sum2+=(i-m)*a[i];
	}
	for(int i=1;i<=n;i++)
	{
		cnt1=sum1;
		cnt2=sum2;
		if(i<m)
			cnt1+=(m-i)*s2;
		else if(i>m)
			cnt2+=(m-i)*s2;
		long long tmp=abs(cnt1,cnt2);
		if(min>tmp)
		{
			min=tmp;
			where=i;
		}
	}
	printf("%lld",where);
	return 0; 
}

2020/7/17 12:14
加载中...