64分求助
查看原帖
64分求助
305854
Drind楼主2020/11/5 21:04

RT,以下是代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll maxm(ll a,ll b)
{
	if(a>b)
		return a;
	else
		return b;
}

ll minm(ll a,ll b)
{
	if (a<b)
		return a;
	else
		return b;
}
int main()
{
	ll n,a[100005],lo=0,hu=0,s1,s2,m,p1,p2;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	cin>>m>>p1>>s1>>s2;
	a[p1]+=s1;
	for(int i=1;i<m;i++)
		lo+=a[i]*(m-i);
	for(int i=m+1;i<=n;i++)
		hu+=a[i]*(i-m);
	if(lo==hu)
	{
		cout<<m;
		return 0;
	}
	ll c=abs(lo-hu);
	//cout<<lo<<" "<<hu<<" ";
	if(lo<hu)
	{
		p2=m-(hu-lo)/s2;
		p2=maxm(1,p2);
		p2=minm(p2,m-1);
		if(p2>1&&abs(c-(m-p2+1)*s2)<abs(c-(m-p2)*s2))
			cout<<p2-1;
		else
			cout<<p2;
	}
	else
	{
		p2=m+(lo-hu)/s2;
		p2=maxm(m,p2);
		p2=minm(p2,n);
		if(p2<n&&abs(c-(m-p2-1)*s2)<abs(c-(m-p2)*s2))
			cout<<p2+1;
		else
			cout<<p2;
	}
	return 0;
}
2020/11/5 21:04
加载中...