wrongnumber 2014-03-09 00:58:48
点我顶贴
收藏
删除
#include<iostream>
#include<cstdio>
#include<algorithm>
#define MAX 214748364
using namespace std;
int n,a[1002],dp[102][1002][1002]={};
int DP(int i,int l,int r)
{
if (l>r) return 0;
if (l==r) return dp[i][l][r]=i*a[l];
if (dp[i][l][r]) return dp[i][l][r];
dp[i][l][r]=MAX;
for (int q=l+1;q<r;q++)
dp[i][l][r]=min(dp[i][l][r],i*a[q]+DP(i+1,l,q-1)+DP(i+1,q+1,r));
return dp[i][l][r];
}
int main()
{
scanf("%d",&n);
for (int q=0;q<n;q++) scanf("%d",&a[q]);
sort(a,a+n,less<int>());
printf("%d",DP(1,0,n-1));
//system("pause");
return 0;
}