SP8794 SWJAM - Swimming Jam

题目描述

在这个经济不景气的时期,市政不堪重负,许多市民急切要求改善显而易见的城市设施,但无法实现。其中一个典型例子是城市游泳池,它仅有两条泳道。为在有限资源下充分利用设施,市政健身局制定了一套使用规则。 这两条泳道被设置为不同方向的单向游泳使用。游泳者必须从其中一条泳道的一端游到另一端,然后切换到另一条泳道游回来。当他们回到起始点后,必须返回原来的泳道继续游泳。 每位游泳者都有自己固定的速度。然而,由于泳道的宽度限制,游泳者在泳池中间不能超越其他人,只能在泳道两端变换顺序。因此,较慢的游泳者会阻挡速度较快的游泳者,直到到达泳道的尽头。需要注意的是,阻挡者的速度可能实际上比被阻挡者要快,但由于前方有更慢的游泳者,他们也被跟随。 如果游泳者同时到达泳道的终点,他们可以重新调整顺序,自然速度较快的人会游在前面。由交通阻塞形成的游泳者群体到达泳道尽头时,也被视为同时到达,并会在此重新排序。题目提供了游泳者人数、每位游泳者从一端游到另一端的速度以及他们计划完成的圈数等信息。这里所说的一“圈”是指从一端游到另一端然后再游回来。你的任务是计算所有游泳者完成其游泳计划所需的总时间。所有游泳者从同一端同时出发,速度较快者排列在前。在解决这一问题时,你可以忽略游泳者的身体大小,以及在泳道末端转换泳道和重新排序所需的时间。

输入格式

输入包含多个数据集。每个数据集的格式如下所示: ``` n t1 c1 … tn cn ``` 其中,$n$ 是一个整数($1 \le n \le 50$),表示游泳者的数量。接下来的 $n$ 行中的每一行包含两个整数 $t_i$ 和 $c_i$($1 \le t_i \le 300$,$1 \le c_i \le 250$),分别表示第 $i$ 个游泳者从一端游到另一端的自然时间和计划游泳的圈数。$t_i$ 和 $c_i$ 之间用空格隔开。 输入以一行单独的零(`0`)结束。

输出格式

对于每个数据集,输出所有游泳者完成其计划所需的时间。输出中不应包含额外字符。 **本翻译由 AI 自动生成**