开了 long long,不知道错哪了……
#include <iostream>
using namespace std;
unsigned long long n,m,p1,p2 = 1,s1,s2,c_[100001],d,t,*c = c_-1;
unsigned long long lz(unsigned long long x){
if(x < m){
int d2 = d;
d2 -= c[x] * (m-x);
d2 += (c[x] + s2) * (m-x);
return (t > d2?t-d2:d2-t);
}
else if(x > m){
int t2 = t;
t2 -= c[x] * (x-m);
t2 += (c[x] + s2) * (x-m);
return (t2 > d?t2-d:d-t2);
}
else return (t > d?t-d:d-t);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(unsigned long long i = 1;i <= n;i++){
cin >> c[i];
}
cin >> m >> p1 >> s1 >> s2;
c[p1] += s1;
for(unsigned long long i = 1;i < m;i++){
d += c[i] * (m-i);
}
for(unsigned long long i = m+1;i <= n;i++){
t += c[i] * (i-m);
}
for(unsigned long long i = 2;i <= n;i++){
if(lz(i) < lz(p2)) p2 = i;
}
cout << p2;
return 0;
}
dalao 如能指出错误,当感激不尽