龙虎斗最后五个测试点是错的 求解析
#include<bits/stdc++.h>
using namespace std;
long long n,m,p1,p2,s1,s2,num[100005],minx;
long long d=0,t=0;
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld",&num[i]);
}
scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
for(int i=1;i<m;i++)
{
d+=(m-i)*num[i];
}
for(int i=m+1;i<=n;i++)
{
t+=(i-m)*num[i];
}
if(p1<m)d+=(m-p1)*s1;
else if(p1>m)t+=(p1-m)*s1;
int cha;
int t1,d1;
t1=t;
d1=d;
for(int i=1;i<=n;i++)
{
if(i>m)t+=(i-m)*s2;
else d+=(m-i)*s2;
if(d>t)cha=d-t;
else cha=t-d;
if(i==1)
{
minx=cha;
p2=1;
}
if(cha<minx)
{
minx=cha;
p2=i;
}
t=t1;
d=d1;
}
printf("%lld",p2);
return 0;
}