题目描述
题解
其实每种表演2次和表演多次是等价的,那么我们对 Ci 进行排序,大的放在两头表演,然后再往中间放,直到放不下或者表演种数不够。
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int max_k=305;
int N,K,C[max_k],ans;
inline int cmp(int a,int b){
return a>b;
}
int main(){
scanf("%d%d",&N,&K);
for (int i=1;i<=K;++i)
scanf("%d",&C[i]);
sort(C+1,C+K+1,cmp);
int sum=N-1;
for (int i=1;i<=N/2&&i<=K;++i){
ans+=sum*C[i];
sum-=2;
}
printf("%d\n",ans);
}