#include <bits/stdc++.h>
using namespace std;
int n,a[100020],m,p,ss,s,wz;
int main(){
cin >>n;
for(int i=1;i<=n;i++) cin >>a[i];
cin >>m >>p >>ss >>s;
long long lq=0,hq=0;
a[p]+=ss;
for(int i=1;i<m;i++) lq+=(m-i)*a[i];
for(int i=m+1;i<=n;i++) hq+=(i-m)*a[i];
// cout <<lq <<" " <<hq <<endl;
long long c=abs(lq-hq),zx=INT_MAX;
for(int i=1;i<m;i++){
lq+=(m-i)*s;
c=abs(lq-hq);
if(zx>c){
zx=c;
wz=i;
// cout <<zx <<" " <<c <<endl;
// cout <<wz <<endl;
}
lq-=(m-i)*s;
}
for(int i=m+1;i<=n;i++){
hq+=(i-m)*s;
c=abs(lq-hq);
if(zx>c){
zx=c;
wz=i;
// cout <<zx <<" " <<c <<endl;
// cout <<wz <<endl;
}
hq-=(i-m)*s;
}
c=abs(lq-hq);
if(zx>c){
// cout <<zx <<" " <<c <<endl;
wz=m;
zx=c;
}
cout <<wz;
return 0;
}
80代码
只是将输入数据由int改为long long便可AC,
但由题面信息int应该不会炸,经测试得所有输入只有除m外所有变量int均可,只有m用int不可,只有long long能c,但题面显示m小于n,就为小于10^5,也小于int,玄学问题?