bzoj#P1346. [Baltic2006] Coin

[Baltic2006] Coin

题目描述

有一个国家,流通着 NN 种面值的硬币,其中包括了 11 分硬币。另外,有一种面值为 KK 分的纸币,它超过了所有硬币的面值。

有一位硬币收藏家,他想收集每一种面值的硬币样本。他家里已经有一些硬币,但是现在他只带着一张 KK 分纸币去商店。

商店里总共有 K1K-1 种商品,价格分别为 11 分、22 分、……、K1K-1 分。这家商店使用以下算法找零:

  1. 假设总共需要找 AA 分;
  2. 寻找最高的不超过 AA 的硬币面值,设它为 BB 分硬币;
  3. 给顾客一枚 BB 分硬币,然后令 AAABA-B
  4. 如果 A=0A=0,算法结束;否则转到第二步。

收藏家想用他的 KK 分纸币买一件商品。请你编写程序,计算:

  • 收藏家能够得到多少种他还没有过的硬币?
  • 在满足上一问的前提下,他能够买的最贵的商品是什么?

输入格式

第一行为两个整数 NN1N5×1051\leq N\leq 5\times 10^5)和 KK2K1092\leq K\leq 10^9)。

以下 NN 行描述流通的硬币。第 i+1i+1 行包含两个整数 cic_i1ci<k1\leq c_i < k)和 did_i 表示收藏家是否已经有这枚硬币,若 di=1d_i=1 表示已经拥有,否则表示没有。

输入按照硬币面值递增顺序,也就是 C1<C2<<CnC_1 < C_2 < \cdots < C_n,第一枚硬币是 11 分硬币,也就是 C1=1C_1=1

输出格式

第一行为一个整数,表示收藏家最多能获得多少种之前还没有的硬币。

第二行为一个整数,表示在前一问的前提下,收藏家能购买的最贵的商品价格。

7 25
1 0
2 0
3 1
5 0
10 0
13 0
20 0
3
6