POJ 3253

来源:互联网 发布:李洪成排盘软件下载 编辑:程序博客网 时间:2024/06/10 11:49
#include<cstdio>const int maxn = 40000+5;int L[maxn];int N;void swap(int& a, int& b){    int c = a;    a = b;    b = c;}void solve(){    long long ans = 0;    //求出最短的板m1和倒数第二短的板m2     while(N > 1){        int m1 = 0, m2 = 1;        if(L[m1] > L[m2])  swap(m1, m2);        for(int i = 2; i < N; i++){            if(L[i] < L[m1]){                m2 = m1;                m1 = i;            }            else if(L[i] < L[m2]){                m2 = i;            }        }        //将两板拼合起来         int t = L[m1] + L[m2];        ans += t;        if(m1 == N-1)   swap(m1, m2);        L[m1] = t;        L[m2] = L[N-1];        N--;    }    printf("%lld\n", ans);}int main(){    while(scanf("%d", &N) == 1){        getchar();        for(int i = 0; i < N; i++){            scanf("%d", &L[i]);            getchar();        }        solve();    }    return 0;} 
原创粉丝点击