最好能讲解一下谢谢,AC了关注。
#include<cmath>
#include<stdio.h>
#include<cstring>
#include<limits.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,m,s1,s2,p1;
long long mnn,mnv=2e+19,loong,tiger,c[100005];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&c[i]);
}
scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
c[p1]+=s1;
for(int i=1;i<m;i++) loong+=c[i]*(m-i);
for(int i=m+1;i<=n;i++) tiger+=c[i]*(i-m);
// printf("tiger:%d loong:%d\n",tiger,loong);
if(loong==tiger){
printf("%lld\n",m);
} else {
for(long long i=1;i<=n;i++){
if(mnv==0) break;
if(i<m){
if(abs(loong+s2*(m-i)-tiger)<mnv){
mnv=abs(loong+s2*(m-i)-tiger);
mnn=i;
}
// printf("%dcur:%d\n",i,abs(loong+s2*(m-i)-tiger));
} else if(i>m) {
if(abs(tiger+s2*(i-m)-loong)<mnv){
mnv=abs(tiger+s2*(i-m)-loong);
mnn=i;
}
// printf("%dcur:%d\n",i,abs(tiger+s2*(i-m)-loong));
} else {
continue;
}
}
printf("%lld\n",mnn);
}
return 0;
}