代码如下,一直爆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;
}
求大佬帮忙看看