64分,求救!!!
查看原帖
64分,求救!!!
780173
Zyz20101223楼主2024/8/6 14:37
#include<bits/stdc++.h>
using namespace std;
long long num[100005];
long long juli[100005];//到m军营的距离 
long long sum1=0,sum2=0;//龙势力,虎势力 
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>num[i];//输入 
	} 
	int m,s1,s2,p1,p2;//P1军营有s1人,p2军营有s2人 
	cin>>m>>p1>>s1>>s2;
	num[p1]=num[p1]+s1;
	for(int i=1;i<=n;i++)
	{
		juli[i]=abs(m-i);
		if(i<m)//龙势力 
		{
			sum1+=juli[i]*num[i];
		}
		
		else if(i>m)//虎势力 
		{
			sum2+=juli[i]*num[i];
		}
	}
	
	
	if(sum1==sum2)//特判 
	{
		cout<<m;
		return 0;
	}
	else if(sum1<sum2)
	{	
		int ans=INT_MAX;
		for(int i=m-1;i>=1;i--)
		{
			long long x=s2*juli[i];//新的气势 
			if(ans>=abs((sum1+x)-sum2))
			{
				ans=abs((sum1+x)-sum2);
				p2=i;
			}
		}
		cout<<p2;
		return 0;
	}
	
	else if(sum1>sum2)
	{
		int ans=INT_MAX;
		for(int i=n;i>=m+1;i--)
		{
			int x=s2*juli[i];
			if(ans>=abs((sum2+x)-sum1))
			{
				ans=abs((sum2+x)-sum1);
				p2=i;
			}
		}
		cout<<p2;
		return 0;
	}
 	return 0;
}

2024/8/6 14:37
加载中...