题目描述
中午放学, 名同学来到食堂唯一的打饭窗口。第 名同学打饭需要 秒(同学按 编号)。窗口同一时间只能服务一个人。
队伍顺序由你来安排。一名同学的等待时间定义为:排在他前面的所有人的打饭时间之和(排第一位的同学等待时间为 ;自己打饭花的时间不算在等待时间里)。
请安排一个排队顺序,使所有人的等待时间总和最小,并输出:
- 最优顺序(依次输出队伍中每名同学的编号);
- 最小的等待时间总和。
若有多人的打饭时间相同,他们之间按编号从小到大依次排列。
输入格式
第一行一个整数 。
第二行 个整数 ,用空格分隔。
输出格式
第一行 个整数,用空格分隔,表示最优队伍顺序中每名同学的编号。
第二行一个整数,表示最小的等待时间总和。
样例
输入
4 8 3 3 6
输出
2 3 4 1 21
样例说明
按 排队:等待时间依次为 ,总和 。 号与 号打饭时间相同,编号小的 号排前面。
数据范围
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,,;
- 注意:最小的等待时间总和可能超出 位整数范围,请使用 位整数存储。