poj 3253

来源:互联网 发布:跑跑卡丁车淘宝好便宜 编辑:程序博客网 时间:2024/06/02 02:07
#include <stdio.h>#include <stdlib.h>int a[20010];long long sum=0;int main(){    int n,t,i,s;    scanf("%d",&n);    for(i=0; i<n; i++)        scanf("%d",&a[i]);    while(n>1)    {        int firmin=0,secmin=1;        if(a[firmin]>a[secmin])        {            s=firmin;            firmin=secmin;            secmin=s;        }        for(i=2; i<n; i++)            if(a[i]<a[firmin])            {                secmin=firmin;                firmin=i;            }            else if(a[i]<a[secmin]) secmin=i;        t=a[firmin]+a[secmin];        sum+=t;        if(firmin==n-1)        {            s=firmin;            firmin=secmin;            secmin=s;        }        a[firmin]=t;        a[secmin]=a[n-1];        n--;    }    printf("%lld\n",sum);    return 0;}
每次都找最小的两个数就可以了。
0 0
原创粉丝点击