#5013. hyb的电梯

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: Laffey

题目描述

By @Laffey

        hyb 经常在 HY 的教学楼顶层卡电梯,  让在一楼的其他 HYOI 选手们等很久才能等来电梯上楼,  这令他们大为恼火.

        hyb 的具体卡电梯方法为:  让电梯先停在顶层,  并按下尽可能多的按钮,  使电梯在中途停留尽可能长的时间才能到达第一层.

        由于 HY 的经费原因,  电梯的质量不如人意,  因而它在不同的楼层停留的时间也不同.  并且由于 hyb 正在被爬楼梯的 yys 追赶,  所以他只能趁被追上前按下有限的一些按钮.

        你的任务是:  编写一个程序,  计算并输出 hyb 在这段时间里可以令电梯到达第一层所需的时间最大化的值,  以及具体的方案.  注意电梯在第一层停留的时间不计入.

输入格式

        输入文件的第一行为 2 个数据 N M ,  分别表示教学楼的层数以及 yys 追上 hyb 需要的秒数.  hyb 每秒能按下一个按钮.

        第二行有 N 个数据,  第 i 个数据 T_i 表示电梯在第 i 层停留的秒数.

输出格式

        输出文件的第一行有一个数据,  为在第一层的 HYOI 选手们的最长等候时间.

        第二行共 M 个数据,  表示 hyb 在保证电梯停留时间最长的情况下需尽可能多地按下的所有楼层按钮的编号,  按电梯在对应楼层停留的时间从小到大的顺序输出.

样例

样例输入 #1

5 3
20 13 5 4 6

样例输出 #1

24
3 5 2

样例输入 #2

8 5
-7 -1 -7 -1 -2 5 -1 -7 

样例输出 #2

5
6 

样例输入 #3

6 5
7 6 8 -1 4 2

样例输出 #3

20
6 5 2 1 3

数据范围与提示

对于所有的数据

0 \leq M \leq 10^4
0 \leq N \leq 10^4
-10^4 \leq T \leq 10^4

数据保证 M < N  且无重复数据.

没有 lvl.2 了,因为某个屑出题人自己都敲不出来 lvl.2 std 运行时间过长屑出题人懒得再改了于是决定不再做 lvl.2