#992. 排队接水(water.cpp)

排队接水(water.cpp)

题目描述

nn 个人在一个水龙头前排队接水,假如每个人的接水的时间为 TiT_i,请编程找出一种 nn 个人排队的顺序,使得 nn 个人的平均等待时间最小。 假设下一个人接着打水的这个切换过程不消耗时间,且注意,每个人的等待时间包括自己接水的时间和排队等待接水的时间。

输入输出格式

输入

第一行一个整数 nn1n10001≤n≤1000

第二行分别为每个人的接水时间 T1,T2,...,TnT_1,T_2,...,T_n,用空格隔开,Ti106T_i≤10^6

输出

第一行为最优的排队顺序,即编号 1n1 \sim n 的一种排列,每两个数字之间用空格隔开。 第二行为这种排列方案下的平均等待时间(保留两位小数)。

输入输出样例

样例

输入1

10
56 12 1 99 1000 234 33 55 99 812

输出1

3 2 7 8 1 4 9 6 10 5
532.00

时间及空间限制

1s, 256MB.