88pts求调
查看原帖
88pts求调
1099211
封禁用户楼主2025/1/16 22:48
#include <bits/stdc++.h>
using namespace std;
const int N = 100001;
long long int c[N], f[N] = { 0 }, n, m, p1, s1, s2, i, p2;
int main() {
    cin >> n;
    for (i = 1;i <= n;i++) cin >> c[i];
    cin >> m >> p1 >> s1 >> s2;
    c[p1] += s1;
    for (i = m - 1;i > 0;i--) {
        f[i] = f[i + 1] + c[i] * (m - i);
    }
    for (i = m + 1;i <= n;i++) {
        f[i] = f[i - 1] + c[i] * (i - m);
    }
    //for(int i=1;i<=n;i++)cout<<f[i]<<' '; cout<<endl;
    if (f[1] == f[n]) p2 = m;
    else if (f[1] > f[n]) {
        long long int x1, x2, t1, t2;
        x1 = (f[1] - f[n]) / s2;
        x2 = x1 + 1;
        t1 = s2 * x1 + f[n];
        t2 = s2 * x2 + f[n];
        if (abs(f[1] - t1) <= abs(f[1] - t2)) p2 = x1;
        else p2 = x2;
        p2 += m;
        if (p2 > n) p2 = n;
    }
    else {
        long long int x1, x2, t1, t2;
        x1 = (f[n] - f[1]) / s2;
        x2 = x1 + 1;
        t1 = s2 * x1 + f[1];
        t2 = s2 * x2 + f[1];
        if (abs(f[n] - t1) <= abs(f[n] - t2)) p2 = x1;
        p2 = m - p2;
        if (p2 < 1) p2 = 1;
    }
    cout << p2;
    return 0;
}
2025/1/16 22:48
加载中...