排队取水:平均等待时间最小

输入数据占两行,一行人数,一行接水所用时间,
输出一行,为最小的总等待时间,具体如图

img

思路,先从小到大排序时间,等待时间是当前取水时间成等待人数,那么先让取水快的人取水,其等待时间就小
对 5
5 3 10 4 9
先排序 3 4 5 9 10,
sumt+=t[i]*(n-i-1),循环
3✘4+4✘3+5✘2+9✘1+10✘0=43

#include <iostream>
using namespace std;
int main()
{
    int p[100] = {0};
    int n;
    cin >> n ;
    for(int i=0;i<n;i++)
    {
        cin >> p[i];
    }
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
        {
            if(p[j] > p[j+1])
            {
                int t = p[j];
                p[j] = p[j+1];
                p[j+1] = t;
            }
        }
    int res = 0;
    for(int i=0;i<n;i++)
    {
        res=res+p[i]*(n-i-1);
    }
    cout << res << endl ;
    return 0;
}