68pts求助,悬INT_MAX关
  • 板块灌水区
  • 楼主Starry_dream
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/14 12:31
  • 上次更新2024/8/14 14:42:56
查看原帖
68pts求助,悬INT_MAX关
818820
Starry_dream楼主2024/8/14 12:31

P5016

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
int a[100005];
int l,r,minn=INT_MAX,pos=0;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int m,ren1,pos1,ren2;
	cin>>m>>pos1>>ren1>>ren2;
	a[pos1]+=ren1;
	for(int i=1;i<m;i++)
	{
		l=l+a[i]*(m-i);
	}
	for(int i=m+1;i<=n;i++)
	{
		r=r+a[i]*(i-m);
	}
	if(l==r)
	{
		cout<<m;
		return 0;
	}
	if(l<r)
	{
		for(int i=1;i<=m;i++)
		{
			int now=l-a[i]*(m-i);
			now=now+(a[i]+ren2)*(m-i);
			if(abs(r-now)<minn)
			{
				minn=abs(r-now);
				pos=i;
			}
		}
	}
	else
	{
		for(int i=m+1;i<=n;i++)
		{
			int now=l-a[i]*(i-m);
			now=now+(a[i]+ren2)*(i-m);
			if(abs(r-now)<minn)
			{
				minn=abs(r-now);
				pos=i;
			}
		}
	}
	cout<<pos;
	return 0;
}
2024/8/14 12:31
加载中...