L-排隊接水。。。
阿新 • • 發佈:2019-01-22
n個人一起排隊接水,第i個人需要aii的時間來接水。1 <= n <= 10001 <= aii <= 1000
同時只能有一個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。Input第一行一個整數n
接下來n行,每行一個整數表示aiiOutput一行一個整數,表示所有人等待時間的總和的最小值Sample Input
同時只能有一個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。Input第一行一個整數n
接下來n行,每行一個整數表示aiiOutput一行一個整數,表示所有人等待時間的總和的最小值Sample Input
3 1 2 3Sample 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;
}