84pts求助
查看原帖
84pts求助
160870
迟陌楼主2020/10/17 11:23

代码如下,一直爆1、4、22、25这四个点

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[10000001];
long long n,m,p1,s1,s2;long long dp=0,tp=0;
int ac1(long long x,long long y)
{
	long long min=99999999,i,w;
	for(i=m;i<=n;i++)
	if(abs(y+s2*(i-m)-x)<min)
	{
		min=abs(y+s2*(i-m)-x);
		w=i;
	}
	return w;
}
int ac2(long long x,long long y)
{
	int min=99999999,i,w;
	for(i=1;i<=m;i++)
	if(abs(x+s2*(m-i)-y)<min)
	{
		min=abs(x+s2*(m-i)-y);
		w=i;
	}
	return w;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	cin>>m>>p1>>s1>>s2;
	for(int i=1;i<=m-1;i++)
	dp+=(m-i)*a[i];
	for(int i=m+1;i<=n;i++)
	tp+=abs(i-m)*a[i];
    if(p1>m)
	tp+=(p1-m)*s1; 
    if(p1<m)
    dp+=(m-p1)*s1;
    if(tp==dp)
    {
    	cout<<m-1;
    	return 0;
	}
     if(dp>tp)
	{
		cout<<ac1(dp,tp);
		return 0;
	}
	if(dp<tp)
	{
		cout<<ac2(dp,tp);
		return 0;
	}
	return 0;
 } 

求大佬帮忙看看

2020/10/17 11:23
加载中...