社区讨论

80分求助

P5016[NOIP 2018 普及组] 龙虎斗参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lobjjucb
此快照首次捕获于
2023/10/29 22:03
2 年前
此快照最后确认于
2023/11/04 03:06
2 年前
查看原帖
求助 80分
C
#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long n,m,a[100005],p,s1,s2,dr=0,ti=0,ans,min=5*10e18;
	cin >> n;
	for(int i = 1;i <= n;i++)cin >> a[i];
	cin >> m >> p >> s1 >> s2;
	for(int i = 1;i <= m-1;i++)
	{
	dr+=a[i]*(m-i);
	}
	for(int i = m+1;i<=n;i++)
	{
	ti+=a[i]*(i-m);
	}
	if(p<m)dr+=s1*(m-p);
    else ti+=s1*(p-m);
    if(dr==ti)ans=m;
    else if(dr<ti)
    {
      for(int i = 1;i <= m;i++)
	{
	int now,q;now=dr;
    now+=s2*(m-i);
    q=abs(now-ti);
    if(q<min)
    {
      min=q;
      ans=i;
    }
    }
    }
    else
{
for(int i = m;i<=n;i++)
{
int now,q;
now=ti;
now+=s2*(i-m);
q=abs(now-dr);
if(q<min)
{
min=q;
ans=i;
}
}
}
cout << ans;
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...