#mqc2026cspt201. 抢占打印机 (printer)
抢占打印机 (printer)
抢占打印机 (printer)
题目背景
期末考试快到了,蒙自一中图书馆唯一的自助打印机前排起了长龙。由于大家都要复习,争分夺秒,为了保证公平,学校学生会制定了严格的“限流”打印规则。
题目描述
当前队伍里一共有 名同学(从前到后编号为 )。第 名同学手里有 U 盘,他一共需要打印 张复习资料。
打印机的规则如下:
1.每次只能队伍的第一名同学使用打印机。 2.每个人每次只能打印 1 张资料。打印 1 张资料需要消耗 1 秒钟。 3.如果这名同学打印完这 1 张后,他的资料还没有全部印完,他必须立刻抱着书包跑到队伍的最末尾重新排队。 4.如果他已经印完了自己需要的所有资料,他就可以直接离开图书馆回教室复习了。 (忽略同学们交换位置、走路走到队尾的时间,统统视为 0 秒)
小明排在队伍的第 个位置(即初始编号为 )。他非常焦急,想知道自己彻底印完最后一张资料,可以离开图书馆的那一瞬间,一共过去了多少秒?
输入格式
第一行包含两个正整数 和 ,分别表示队伍里的总人数,以及小明的初始位置。 第二行包含 个正整数 ,依次表示从队首到队尾每个人需要打印的总张数。数字之间用空格隔开。
输出格式
输出一个整数,表示小明印完自己最后一张资料所需的总秒数。
输入输出样例
样例输入 1
3 2
2 3 1
样例输出 1
6
样例 1 解释
第 1 秒:1号同学印 1 张(还剩 1),排到队尾。当前队伍:[2, 3, 1] 第 2 秒:2号同学(小明)印 1 张(还剩 2),排到队尾。当前队伍:[3, 1, 2] 第 3 秒:3号同学印 1 张(还剩 0),印完离开!当前队伍:[1, 2] 第 4 秒:1号同学印 1 张(还剩 0),印完离开!当前队伍:[2] 第 5 秒:2号同学(小明)印 1 张(还剩 1),排到队尾。当前队伍:[2] 第 6 秒:2号同学(小明)印 1 张(还剩 0),印完离开!一共耗时 6 秒。
样例输入 2
5 4
10000000 10000000 10000000 10000000 10000000
样例输出 2
49999999
(提示:请不要尝试用队列一步步去模拟样例 2,否则你的程序会运行到明天早上)
数据范围与约定
对于 的数据,,。(允许使用队列暴力模拟) 对于 的数据,,。 对于 的数据,,。
【特别提醒】:最终的答案可能会非常大,超过 32 位整数的范围。使用 C++ 的同学请务必使用 long long 类型!
Related
In following contests: