80分求助!(DAOLAO进)
查看原帖
80分求助!(DAOLAO进)
780332
Immortal_M楼主2022/10/17 18:40

最后五个测试点WA了 以下为源代码:

#include<bits/stdc++.h>
using namespace std;
int a[100005],b[100005];
int main()
{
	//freopen("fight.in","r",stdin);
	//freopen("fight.out","w",stdout);
	int i;
	int n;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
		b[i]=a[i];
	}
	int m,s1,s2,p1,p2;
	cin>>m>>p1>>s1>>s2;
	int l=0,h=0;
	for(i=1;i<=m-1;i++)
		l+=a[i]*(m-i);
	for(i=m+1;i<=n;i++)
		h+=a[i]*(i-m);
	if(p1<m)
	{
		l-=a[p1]*(m-p1);
		a[p1]+=s1;
		l+=a[p1]*(m-p1);
	}
	if(p1>m)
	{
		h-=a[p1]*(p1-m);
		a[p1]+=s1;
		h+=a[p1]*(p1-m);
	}
	int min=10000000,ans;
	for(i=1;i<=n;i++)
	{
		if(i<m)
			l+=s2*(m-i);
		if(i>m)
			h+=s2*(i-m);
		a[i]=b[i];
		if(abs(l-h)<min)
		{
			min=abs(l-h);
			ans=i;
		}
		if(i<m)
			l-=s2*(m-i);
		if(i>m)
			h-=s2*(i-m);
	}
	cout<<ans;
	return 0;
}
2022/10/17 18:40
加载中...