CF155B Combination

题目描述

Ilya 玩一种卡牌游戏,规则如下。 玩家拥有若干张卡牌,每张卡牌的顶部和底部分别写有两个非负整数。每轮游戏开始时,玩家选择自己的一张卡牌来出牌。如果一张卡牌的顶部数字为 $a_{i}$,底部数字为 $b_{i}$,那么出这张牌时,玩家可以获得 $a_{i}$ 分,并且可以额外出 $b_{i}$ 张牌。打出的卡牌会被弃掉。 更正式地说:设有一个可以出牌的计数器。每轮开始计数器为 1。每出一张卡,计数器会因打出一张牌减 1,并根据该牌底部数字 $b_{i}$ 增加 $b_{i}$,然后该牌被移除。如果此后计数器不为零,玩家可以继续从剩下的牌中选择一张牌打出。回合在计数器为零或无牌可选时结束。 当然,Ilya 想获得尽可能多的分数。已知他拥有的所有牌,请你计算出他一轮最多能得到多少分。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 1000$),表示 Ilya 拥有的牌数。 接下来 $n$ 行,每行两个用空格分隔的非负整数,分别表示第 $i$ 张牌顶部的数字 $a_{i}$ 和底部的数字 $b_{i}$($0 \leq a_{i},b_{i} \leq 10^{4}$)。

输出格式

输出一个整数,表示按照上述规则一轮游戏最多可以获得的分数。

说明/提示

在第一个样例中,两张牌都不能带来额外的出牌次数,因此应该选择分值较高的那一张作为出牌。 在第二个样例中,应首先打第三张牌,即便它不带来分数,但是它可以让你再出两张剩下的牌。 由 ChatGPT 5 翻译