P16981 [NWERC 2017] 安装应用 / Installing Apps
题目背景
译自 [Northwestern Europe Regional Contest (NWERC) 2017](http://2017.nwerc.eu) Problem I。
原题许可协议为 CC BY-SA。
题目描述
Sandra 最近买了她的第一部智能手机。她的一位朋友给了她一长串建议安装的应用程序(通常称为 “apps”)。Sandra 立刻开始按照列表安装这些应用,但安装了几个之后,手机就没有足够的磁盘空间继续安装更多应用了。有时,安装失败是因为连安装包都没有足够空间下载;另一些应用能够下载成功,但没有足够空间存储安装后的应用。
Sandra 安装的每个应用都有下载大小 $d$ 和存储大小 $s$。为了下载这个应用,Sandra 的手机必须至少有 $d$ MB 的可用磁盘空间。安装完成后,这个应用会在手机上占用 $s$ MB 的磁盘空间。下载大小可能小于存储大小(例如应用数据被高度压缩),也可能大于存储大小(例如下载内容包含一些可能不会被使用的材料,比如不同语言的翻译)。安装器非常高效,可以在不使用额外磁盘空间的情况下把下载包转换成已安装应用。因此,要安装一个应用,手机必须至少有 $\max(d,s)$ MB 的可用磁盘空间。
Sandra 很快意识到,她可能只是因为安装顺序错误才导致空间不够。于是,她决定重新尝试。她卸载了所有应用,现在将选择一个安装顺序,使她能够从列表中安装尽可能多的应用。Sandra 不能重复安装同一个应用。
请帮助她确定应该安装列表中的哪些应用,以及安装顺序。
输入格式
输入包含:
- 一行两个整数 $n,c$($1 \leq n \leq 500$,$1 \leq c \leq 10000$),分别表示可选应用数量和手机可用磁盘空间(单位:MB)。
- 接下来 $n$ 行,每行两个整数 $d,s$($1 \leq d,s \leq 10000$),表示一个应用的下载大小和存储大小(单位:MB)。
输出格式
第一行输出最多可以安装的应用数量。
第二行输出这些应用的编号,并按 Sandra 应当安装它们的顺序排列。如果没有任何应用可以安装,则这一行可以省略。
应用按输入顺序从 $1$ 到 $n$ 编号。如果存在多种最优方案,输出任意一种即可
说明/提示
【数据规模与约定】
对于所有数据,满足 $1 \leq n \leq 500$,$1 \leq c \leq 10000$,$1 \leq d,s \leq 10000$。如果有多种最优方案,输出任意一种即可。