
我的思路很简单,就是先计算龙虎两边的势力和,然后枚举每一个位置打擂台记录最小差值(本蒟蒻太菜,大佬勿喷_orz_)
//注释起来的是用来调试的
#include<bits/stdc++.h>
using namespace std;
struct node{
int p,s;
}a[100010];
struct h{
int pos,t;
}ans;
int n,m,s1,s2,p1,p2,sl=0,sr=0,c;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("p5016_21.in","r",stdin);
//freopen("p5016_21.out","w",stdout);
cin>>n;
for (int i=1; i<=n; i++){
cin>>a[i].p;
}
cin>>m>>p1>>s1>>s2;
a[p1].p+=s1;
//cout<<endl<<"tmp:"<<endl;
int tmp1=0,tmp2=0;
for (int i=1; i<=n; i++){
if (i!=m){
a[i].s=a[i].p*abs(m-i);
//cout<<a[i].p<<"*"<<abs(m-i)<<"="<<a[i].s;
if (i<m){
sl+=a[i].s;
//cout<<"[l s:"<<sl<<" m:"<<m<<" pos:"<<i<<"]"<<endl;
}
if (i>m){
sr+=a[i].s;
//cout<<"[r s:"<<sr<<" m:"<<m<<" pos:"<<i<<"]"<<endl;
}
}
}
//cout<<endl<<sl<<" "<<sr<<endl;
if (sl==sr){
cout<<m;
return 0;
}
c=abs(sr-sl);
ans.t=INT_MAX;
for (int i=1; i<=n; i++){
int tmp;
if (i<m){
tmp=sl;
tmp+=s2*abs(m-i);
//cout<<"[l "<<"pos:"<<i<<" (sl,sr):"<<abs(sr-tmp)<<"]"<<endl;
if (abs(sr-tmp)<ans.t){
ans.t=abs(sr-tmp);
ans.pos=i;
}
}
if (i>m){
tmp=sr;
tmp+=s2*abs(m-i);
//cout<<"[r "<<"pos:"<<i<<" (sl,sr):"<<abs(sl-tmp)<<"]"<<endl;
if (abs(sl-tmp)<ans.t){
ans.t=abs(sl-tmp);
ans.pos=i;
}
}
}
if (ans.t>c){
cout<<m;
return 0;
}
//cout<<endl<<sl<<" "<<sr<<endl<<ans.t<<" "<<ans.pos;
cout<<ans.pos;
return 0;
}