rt,蒟蒻的代码至得了36分。感谢大佬们的帮助~~
#include <iostream>
#include <cstdio>
#define MAXN 100005
using namespace std;
long long n, c[MAXN], m, p1, s1, s2;
long long l, h;
long long answer;
int abs(int a, int b){
if (a >= b) return a - b;
else return b - a;
}
int main(){
cin >> n;
for (int i = 1;i <= n; ++i){
cin >> c[i];
}
cin >> m >> p1 >> s1 >> s2;
c[p1] += s1;
bool flag = false;
for (int i = 1;i <= n; ++i){
if (i == m){
flag = true;
continue;
}
if (flag == false){
l += (m - i) * c[i];
}
else if (flag == true){
h += (i - m) * c[i];
}
}
int number = abs(l, h);
if (l == h){
cout << m << endl;
return 0;
}
else if (l > h){
int H = 0;
int a = 0;
for (int i = m + 1;i <= n; ++i){
a = (i - m) * c[i];
H = (i - m) * (c[i] + s2);
if (abs((H - a), number) < number){
answer = i;
number = abs((H - a), number);
}
}
if (abs((H - a), number) > number){
cout << m << endl;
return 0;
}
cout << answer << endl;
return 0;
}
else {
int L = 0;
int a = 0;
for (int i = 1;i <= m - 1; ++i){
a = (m - i) * c[i];
L = (m - i) * (c[i] + s2);
if (abs((L - a), number) < number){
answer = i;
number = abs((L - a), number);
}
else if (abs((L - a), number) == number and i < m){
answer = i;
}
}
if (abs((L - a), number) > number){
cout << m << endl;
return 0;
}
cout << answer << endl;
return 0;
}
return 0;
}