32分求调
查看原帖
32分求调
1051105
chenshihao20110204楼主2024/7/31 17:04

代码如下

#include<iostream>
#include<cmath>
using namespace std;
int bin[200000],shi1,shi2,shi[200000],m,n,p1,s1,s2,p2;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++) cin>>bin[i];
	cin>>m>>p1>>s1>>s2;
	m--;
	for(int i=0;i<n;i++)
	{
		shi[i]=bin[i]*abs(m-i);
	}
	for(int i=0;i<m;i++) shi1+=shi[i];
	for(int i=m+1;i<n;i++) shi2+=shi[i];
	if(p1<m) shi1+=(m-p1)*bin[p1-1];
	else shi2+=(p1-m)*bin[p1-1];
	int cha=shi2-shi1;
	if(cha==0) cout<<m;
	int maxn=cha>0?abs(cha-s2*(m)):abs(cha-s2);
	if(cha>0) 
	{
		for(int i=0;i<=m;i++)
		{
			if(abs(cha-s2*(m-i))<maxn)
			{
				maxn=abs(cha-s2*(m-i));
				p2=i;
			}
		}
	}
	if(cha<0)
	{
		for(int i=m;i<n;i++)
		{
			if(abs(cha-s2*(i-m))<maxn)
			{
				maxn=abs(cha-s2*(i-m));
				p2=i;
			}
		}
	}
	cout<<p2+1;
}
2024/7/31 17:04
加载中...