2015年10月26日 星期一

[HOJ] 61 獨木橋

兩種情況比較
1. a[1]+a[0]+a[max]+a[1]
2. a[max]+a[0]+a[max-1]+a[0]
#include<cstdio>
#include<algorithm>
using namespace std;
 
int n,a[100005],k;
long long ans;
int main(){
    scanf("%d",&n);
    k=n;
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n);
    if(n>3){
        k=n%2+2;
        for(int i=n-1;i>2;i-=2)
            ans+=min(a[0]+a[1]*2+a[i],a[0]*2+a[i]+a[i-1]);
    }
    if(k==1)printf("%d\n",a[0]);
    else if(k==2)printf("%lld\n",ans+a[1]);
    else if(k==3)printf("%lld\n",ans+a[0]+a[1]+a[2]);
}

沒有留言:

張貼留言