2015年4月21日 星期二

TIOJ 1398 . 霍夫快編碼

n=1 special case炸爛gg

#include <cstdio>
#include <cstdlib>
#include <queue>

typedef long long int int64;

using namespace std;

int main(){
    int n; 
    while(scanf("%d", &n) == 1){
        priority_queue<int64> prc;
        for(int lx = 0;lx < n;lx++){
            int64 inp; scanf("%lld", &inp);
            prc.push(-inp);
        }
        int64 sum = 0;
        if(n == 1) sum = prc.top();
        if(n%2 == 0){
            int64 c = 0;
            c += prc.top(); prc.pop();
            c += prc.top(); prc.pop();
            prc.push(c);
            sum += c;
        }
        while(prc.size() >= 3){
            int64 c = 0;
            c += prc.top(); prc.pop();
            c += prc.top(); prc.pop();
            c += prc.top(); prc.pop();
            prc.push(c);
            sum += c;
        }
        printf("%lld\n", -sum);
    }
    return 0;

}

沒有留言:

張貼留言