这道题,先把章节数sort升序排序,最小的乘以最初的时间,然后第二小的乘以最初的时间减一,以此类推。当时间为1时,以后的时间都用1。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define SIZE 100005
int chapters[SIZE];
int n,x;
long long sum;
int main()
{
while(scanf("%d %d",&n,&x) != EOF)
{
for(int i = 0; i < n; i++)
scanf("%d",&chapters[i]);
sort(chapters,chapters + n);
sum = 0;
for(int i = 0; i < n; i++)
{
if(x > 1)
sum += (long long) chapters[i] * (x--);
else
sum += chapters[i];
}
printf("%I64d\n",sum);
}
return 0;
}