UOJ Logo 蜗牛编程训练题库

JZOJ

#197. 烤鱼

统计
时间限制:1s    空间限制:256MB    输入文件:ceating..in    输出文件:ceating..out
当前24小时内您还剩30次提交本题的机会

题目描述

小x掉到了一个jzyz的窨井里,这口井很深,没有人能听到小x的呼救,悲催的小x必须要等D天后,学校确认他失踪才会大规模寻找他,而这难熬的D天将是小x这一生最难过的D天。 不过幸运的是小x在井里得到了N (1 <= N <= 50,000) 条鱼,编号1..N.他计划在接下来的D (1 <= D <= 50,000)天按鱼的编号从小到大逐天吃,当然,小x可以一天连续吃多条鱼,也可以不吃。   为了不浪费,小x要求鱼必须吃完。。 对于第i条鱼,小x的能量值会增加Hi(1 <= Hi <= 1,000,000)。小x会在白天吃鱼,一旦吃饱,他就会一觉睡到第二天。第二天醒来,她的能量值会变成前一天的能量值的一半(向下取整),小x的能量值是可以累加的。 小x比较注意维护每天能量的平衡,要刻意避免能量的大起大落,于是现在小x想知道,如何安排吃鱼,才能保证能量值最小的那个晚上(假设是第X个晚上),第X个晚上的能量值最大。 例如:有5条鱼,能量值分别是: (10, 40, 13, 22, 7). 小x按以下方式吃鱼,将会得到最优值:

·第几天 ·醒来时能量值 ·吃了鱼后能量值 ·晚上睡觉能量值·
1 0 10+40  50
2 25 ---   25                      
3 12 13   25
4 12 22   34                     
5 17 7    24  

可以看出,第1天吃了鱼1、鱼2,第2天不吃鱼,第3天吃了鱼3,第4天吃了鱼4,第5天吃了鱼5。 那么在这5个晚上,能量值最低的是第5个晚上,能量值是24,所以输出24。然后你还要输出第I (1<=i<=N)条鱼是小x第几天吃掉的。

输入格式

第1行:两个整数: N 和 D 第2..N+1行: 每行一个整数Hi。

输出格式

第1行: 一个整数, 在这D个晚上里,能量值最小的那个晚上(假设是第X个晚上),第X个晚上的能量值最大可以是多少? 第2.....N+1行: 每行一个整数,第 i 行表示第i条鱼是第几天被吃的。

样例数据

input

5 5
10
40
13
22
7

output

24
1
1
3
4
5

数据规模与约定

40% 保证 N,D<=200
100%数据如题目描述

时间限制:$1 \text {s}$

空间限制:$256 \text {MB}$

解题讨论区

标题 发表者 发表日期