这是我的80分代码
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long c[100010];
int main()
{
long long n,min;
cin>>n;
for(int i=1;i<=n;i++)cin>>c[i];
int m,p1,s1,p2,s2;
cin>>m>>p1>>s1>>s2;
c[p1]+=s1;
long long lf=0,hf=0;
for(int i=1;i<m;i++)
lf+=c[i]*(m-i);
for(int i=m+1;i<=n;i++)
hf+=c[i]*(i-m);
min=abs(hf-lf);
p2=m;
if(lf<hf)
{
for(int i=1;i<m;i++)
{
long long a=abs(hf-(lf+s2*(m-i)));
if(a<min)
{
min=a;
p2=i;
}
}
}
if(lf>hf)
{
for(int i=m+1;i<=n;i++)
{
long long a=abs((hf+(s2*(i-m)))-lf);
if(a<min)
{
min=a;
p2=i;
}
}
}
cout<<p2<<endl;
return 0;
}
这是我的AC代码(以前)
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long a[112345];
int main()
{
long long n;
long long m,p1,s1,s2,p2;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>m>>p1>>s1>>s2;
a[p1]+=s1;
long long lo=0,hu=0;
for(int i=1;i<=n;i++)
{
if(i<m)lo+=a[i]*(m-i);
else if(i>m)hu+=a[i]*(i-m);
}
p2=m;
long long cha=abs(lo-hu);
for(int i=1;i<=n;i++)
{
if(i<m)
{
long long k=abs((lo+s2*(m-i))-hu);
if(k<cha)
{
cha=k;
p2=i;
}
}
if(i>m)
{
long long k=abs((hu+s2*(i-m))-lo);
if(k<cha)
{
cha=k;
p2=i;
}
}
}
cout<<p2<<endl;
return 0;
}