提交时间:2025-02-07 17:04:55
运行 ID: 36136
#include<bits/stdc++.h> #define int long long using namespace std; map<pair<pair<int,int>,int>,int>f; int n; int num[1010]; void readin(){ cin>>n; for(int i=1;i<=n;i++)cin>>num[i]; sort(num+1,num+1+n); reverse(num+1,num+1+n); } string use[1010]; int cost[1010]; void solve(){ use[1]='1'; use[2]='2'; cost[1]=1; cost[2]=2; for(int i=3;i<=n;i++){ int min_add=1e18,min_use; for(int j=1;j<i;j++){ if(min_add>num[j]+(cost[j]+2)*num[i]){ min_add=num[j]+(cost[j]+2)*num[i]; min_use=j; } } use[i]=use[min_use]+"2"; use[min_use]+="1"; cost[i]=cost[min_use]+2; cost[min_use]++; } int ans=0; for(int i=1;i<=n;i++)ans+=cost[i]*num[i]; cout<<ans; } signed main(){ readin(); solve(); return 0; }