【NOIP模板】 堆-stl

来源:互联网 发布:武功 知乎 编辑:程序博客网 时间:2024/06/07 05:53
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;long long ans = 0;int t, n, a[100010];int main() {    scanf("%d", &n);    for(int i = 1; i <= n; i ++)        scanf("%d", &a[i]);    make_heap(a + 1, a + n + 1, greater<int>());    int t, cnt = n;    while(1) {        t = a[1];        pop_heap(a + 1, a + cnt + 1, greater<int>());        t += a[1]; cnt --;        pop_heap(a + 1, a + cnt + 1, greater<int>());        ans += t, a[cnt] = t;        push_heap(a + 1, a + cnt + 1, greater<int>());        if(cnt == 1) break;    }    printf("%lld", ans);    return 0;}
原创粉丝点击