80分求助!!!
查看原帖
80分求助!!!
979465
insist_long楼主2024/8/7 00:14
#include <iostream>
#include <cmath>
using namespace std;

long long a[100010];
const long long INF = 10000000;

int main() {
    long long q2 = 0;
    long long n, p1, p2 = 0, s1, s2, m; 
    long long lqishi = 0, hqishi = 0;

    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    cin >> m >> p1 >> s1 >> s2;
    for (int i = 1; i < m; i++) lqishi += a[i] * (m - i);
    for (int i = m + 1; i <= n; i++) hqishi += a[i] * (i - m);
    if (p1 < m) {
        lqishi += s1 * (m - p1);
    } else if (p1 > m) {
        hqishi += s1 * (p1 - m);
    }
    long long minDiff = INF; 

    // 遍历所有可能的p2
    for (int i = 1; i <= n; i++) {
        long long newLqishi = lqishi;
        long long newHqishi = hqishi;

        if (i < m) {
            newLqishi += s2 * (m - i);
        } else if (i > m) {
            newHqishi += s2 * (i - m);
        }

        long long diff = abs(newLqishi - newHqishi);

        if (diff < minDiff) { 
            minDiff = diff; 
            q2 = i; 
        }
    }

    cout << q2 << endl;
    return 0;
}

能开long long的都开longlong了,为啥还80分啊!!!

2024/8/7 00:14
加载中...