5A.盲盒找零(change)
时空限制:0.5 s / 512 MiB
输入输出方式:change.in / change.out
小 Z 开了一家糖果盲盒店!
所有盲盒的售价统一为 元一个。现在有 名顾客即将依次前来购买糖果盲盒,不幸的是,小 Z 的城市中不存在任何移动支付方式,这些顾客分别会用一张面值为 , 或 元的纸币来付款,然后期望收到找零,第 名顾客使用的纸币面额为 。
不幸的是,小 Z 在开业前没有为店里准备任何零钱,因此,他必须通过前面顾客付款的钱来为后面的顾客找零。好在,他可以选择性地拒绝某些顾客的购买。请你帮小 Z 算出:在这 名顾客中,他至多能接受多少位顾客购买,并且给他们合适的找零?
输入格式
从文件 change.in 中读入数据。
输入的第一行包含一个正整数 ,表示顾客数。
第二行包含 个正整数 ,分别表示每名顾客支付的纸币面额。
输出格式
输出到文件 change.out。
输出一行一个整数,表示小 Z 接受顾客数量的最大值。
样例 1
4 10 20 20 50
2
可以接待前两名顾客。第一名顾客付款后,收银台有一张 元纸币;接待第二名顾客时可用它找零。此后收银台没有 元纸币,无法接待第三名顾客,也无法为第四名顾客找零。因此最多接待 名顾客。
样例 2
9 10 10 10 10 10 50 20 20 20
8
若接待第六名顾客,需要用四张 元纸币找零,之后只能再接待一名支付 元的顾客。拒绝第六名顾客,则可以接待其余所有顾客,共接待 名,因此答案为 。
样例 3
10 10 10 20 20 50 10 50 20 10 20
9
一种最优方案是仅拒绝第七名顾客。接待第五名顾客时可用两张 元纸币找零;保留下来的 元纸币足以服务之后支付 元的顾客,所以其余 名顾客均可接待。
样例 4
见附件中的 change4.in 与 change4.ans。
该样例满足测试点 的限制条件。
样例 5
见附件中的 change5.in 与 change5.ans。
该样例满足测试点 的限制条件。
数据范围
对于全部的测试数据,保证:
- ;
- 对于任意 ,。
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 无 | ||
| A | ||
| BC | ||
| C | ||
| 无 |
- 特殊性质 A:保证 ;
- 特殊性质 B:对于任意 ,保证 ;
- 特殊性质 C:保证存在 ,使得:
- 对于任意 ,;
- 对于任意 ,。