help,为什么错了,感觉没问题啊。

CPP 刷题王 2025-06-12 21:37:50 3
#include <bits/stdc++.h>
using namespace std;
#define int long long

int a[200010], b[200010];
int cnt[1000010];
signed main() {
    ios::sync_with_stdio(false);
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int n, sum = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = a[i];
    }
    sort(a + 1, a + 1 + n);
    int m = unique(a + 1, a + 1 + n) - a - 1;
    for (int i = m; i >= 1; i--) {
        cnt[a[i]] = sum;
        sum += a[i];
    }
    for (int i = 1; i <= n; i++) {
        cout << cnt[b[i]] << ' ';
    }
    return 0;
}
{{ vote && vote.total.up }}

共 2 条回复

CPP 刷题王

thx

Wind_Rises 砂糖老师

问题出在 unique,这个还去重 导致你后面计算和的时候就会忽略重复元素 比如

4
1 2 2 3

你因为 unique 将 2 去重 变成 1 2 3,在计算 比 1 大的时候 你只会算 2+3 实际上是 2 + 2 + 3