33,311
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <algorithm>
using namespace std;
int data[10005];
inline long long solve(int n)
{
long long result = 0;
for (;;)
{
if (n > 3)
{
int t1 = data[1] + data[0] + data[n-1] + data[1];
int t2 = (data[0]<<1) + data[n-1] + data[n-2];
if (t1 < t2) result += t1, n-=2;
else result += t2, n-=2;
} else if (n == 2) return result + data[1];
else return result + data[0] + data[1] + data[2];
}
}
int main()
{
int n;
while (scanf("%d", &n) == 1)
{
for (int i = 0; i < n; ++i) scanf("%d", data+i);
if (n==1){printf("%d\n", data[0]);continue;}
if (n==0){puts("0");continue;}
sort(data, data+n);
printf("%lld\n",solve(n));
}
return 0;
}