80分求助,WA on #21~25
查看原帖
80分求助,WA on #21~25
494421
Exoplanet楼主2022/10/14 22:27

rt,调了2天了

已经开long long了。

各位大佬帮我看一下问题出在哪里,谢谢!

#include<cstdio>

long long c[100010],n,m,p1,s1,s2,lon,hu,ans2=200000000001,ans1,ans;

long long abs(int x)
{
	if(x<0) return -x;
	return x;
}

int main()
{
	scanf("%lld",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%lld",&c[i]);
	}
	scanf("%lld %lld %lld %lld",&m,&p1,&s1,&s2);
	
	c[p1-1]+=s1;
	for(long long i=0;i<m-1;i++)
	{
		lon+=c[i]*((m-1)-i);
	}
	for(long long i=m;i<n;i++)
	{
		hu+=c[i]*(i-(m-1));
	}
	
	if(s2==0)
	{
		printf("1");
		return 0;
	}
	if(lon==hu)
	{
		printf("%lld",m);
		return 0;
	}
	for(long long i=0;i<n;i++)
	{
		if(i<m-1) 
		{
			lon+=s2*((m-1)-i);
		}
		if(i>m-1) 
		{         
			hu+=s2*(i-(m-1));
		}
		ans1=abs(lon-hu);
		if(ans1<ans2)
		{
			ans2=ans1;
			ans=i;
		}
		if(i<m-1) lon-=s2*((m-1)-i);
		else hu-=s2*(i-(m-1));
	}
	
	printf("%lld",ans+1);
	return 0;
}
2022/10/14 22:27
加载中...