这种贪心为什么是错的呢
查看原帖
这种贪心为什么是错的呢
755043
sinestrea楼主2024/10/22 22:34
#include <bits/stdc++.h>
#define TO(i, a, b) for (int i = a; i <= b; i++)


const int MAX = 1e5 + 5;


long long n{}, a[MAX]{}, sum{}, sufSum{}, cnt = 1;


int main() {
    std::ios::sync_with_stdio(0);
    std::cin >> n;
    TO (i, 1, n) {
        std::cin >> a[i];
        if (a[i] > 0) sufSum += a[i];
    }
    TO (i, 1, n) {
        if (a[i] > 0) {
            sum += a[i] * cnt;
            sufSum -= a[i];
            cnt++;
        }
        else if (sufSum + a[i] * cnt > 0) {
            sum += a[i] * cnt;
            cnt++;
        }
    }
    std::cout << sum;
}
2024/10/22 22:34
加载中...