#include<bits/stdc++.h>//万能头
#define ll long long//简写
using namespace std;
int n,m;
int a[100005];//每个点的工兵数量
ll suma,sumb;//左侧的气势/右侧的气势
int p;
ll q;
ll minn;//气势差的最小值
int ans;//答案
int i;//循环
ll abss(ll x)
{
return ((x>=0)?x:-x);
}
int main(int argc,char** argv)
{
cin >>n;
for (i=1;i<=n;i++)
cin >>a[i];
cin >>m;
cin >>p>>q;
a[p]+=q;
for (i=1;i<m;i++)
suma+=a[i]*(m-i);
for (i=m+1;i<=n;i++)
sumb+=a[i]*(i-m);
ans=m;//初始化
minn=abss(suma-sumb);//计算差值
cin >>p;//重复利用
if (minn==0)//如果差值为0
cout <<m<<endl;
else if (suma<sumb)//如果左侧气势小于右侧
for (i=1;i<m;i++)
{
q=p*(m-i);
suma+=q;
if (abss(suma-sumb)<minn||((abss(suma-sumb)==minn)&&(i<ans)))//如果气势差小于最小值或二者相等但兵营编号更小
{
minn=abss(suma-sumb);//更新最小值
ans=i;//更新答案
}
suma-=q;//回到原来的值
}
else//如果右侧气势小于左侧
for (i=m+1;i<=n;i++)
{
q=p*(i-m);
sumb+=q;
if (abss(suma-sumb)<minn||((abss(suma-sumb)==minn)&&(i<ans)))//如果气势差小于最小值或二者相等但兵营编号更小
{
minn=abss(suma-sumb);//更新最小值
ans=i;//更新答案
}
sumb-=q;//回到原来的值
}
cout <<ans<<endl;//输出答案
return 0;
}
WA了1、4、21-25号测试点,神奇