rt,调了2天了
已经开long long了。
各位大佬帮我看一下问题出在哪里,谢谢!
#include<cstdio>
long long c[100010],n,m,p1,s1,s2,lon,hu,ans2=200000000001,ans1,ans;
long long abs(int x)
{
if(x<0) return -x;
return x;
}
int main()
{
scanf("%lld",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&c[i]);
}
scanf("%lld %lld %lld %lld",&m,&p1,&s1,&s2);
c[p1-1]+=s1;
for(long long i=0;i<m-1;i++)
{
lon+=c[i]*((m-1)-i);
}
for(long long i=m;i<n;i++)
{
hu+=c[i]*(i-(m-1));
}
if(s2==0)
{
printf("1");
return 0;
}
if(lon==hu)
{
printf("%lld",m);
return 0;
}
for(long long i=0;i<n;i++)
{
if(i<m-1)
{
lon+=s2*((m-1)-i);
}
if(i>m-1)
{
hu+=s2*(i-(m-1));
}
ans1=abs(lon-hu);
if(ans1<ans2)
{
ans2=ans1;
ans=i;
}
if(i<m-1) lon-=s2*((m-1)-i);
else hu-=s2*(i-(m-1));
}
printf("%lld",ans+1);
return 0;
}