1. 程式人生 > >L-排隊接水。。。

L-排隊接水。。。

n個人一起排隊接水,第i個人需要aii的時間來接水。1 <= n <= 10001 <= aii <= 1000 
同時只能有一個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。Input第一行一個整數n 
接下來n行,每行一個整數表示aiiOutput一行一個整數,表示所有人等待時間的總和的最小值Sample Input
3
1
2
3
Sample Output
10

想稍微練習一下sort,選了複雜的程式碼

也不想改了》。。。。。

大概思路就是排一下序再輸出

3

1

2

3

總是第一個最小,乘此時的總數。

1*3+2*2+3*1

第一*n+第二*n-1.........

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

bool cmp(int a,int b)
{
return a>b;
}

int main() {
int a,n,dex,sum=0;
int arr[1010];
scanf("%d",&n);
dex=n;
while(n--)
{
scanf("%d",&arr[n]);

sort(arr,arr+dex,cmp);

while(dex--)
{
sum+=(arr[dex]*(dex+1));
}

printf("%d",sum);
return 0;
}