#P16981. [NWERC 2017] Installing Apps

[NWERC 2017] Installing Apps

背景

译自 Northwestern Europe Regional Contest (NWERC) 2017 Problem I。

原题许可协议为 CC BY-SA。

题目描述

Sandra 最近买了她的第一部智能手机。她的一位朋友给了她一长串建议安装的应用程序(通常称为 “apps”)。Sandra 立刻开始按照列表安装这些应用,但安装了几个之后,手机就没有足够的磁盘空间继续安装更多应用了。有时,安装失败是因为连安装包都没有足够空间下载;另一些应用能够下载成功,但没有足够空间存储安装后的应用。

Sandra 安装的每个应用都有下载大小 dd 和存储大小 ss。为了下载这个应用,Sandra 的手机必须至少有 dd MB 的可用磁盘空间。安装完成后,这个应用会在手机上占用 ss MB 的磁盘空间。下载大小可能小于存储大小(例如应用数据被高度压缩),也可能大于存储大小(例如下载内容包含一些可能不会被使用的材料,比如不同语言的翻译)。安装器非常高效,可以在不使用额外磁盘空间的情况下把下载包转换成已安装应用。因此,要安装一个应用,手机必须至少有 max(d,s)\max(d,s) MB 的可用磁盘空间。

Sandra 很快意识到,她可能只是因为安装顺序错误才导致空间不够。于是,她决定重新尝试。她卸载了所有应用,现在将选择一个安装顺序,使她能够从列表中安装尽可能多的应用。Sandra 不能重复安装同一个应用。

请帮助她确定应该安装列表中的哪些应用,以及安装顺序。

输入格式

输入包含:

  • 一行两个整数 n,cn,c1n5001 \leq n \leq 5001c100001 \leq c \leq 10000),分别表示可选应用数量和手机可用磁盘空间(单位:MB)。
  • 接下来 nn 行,每行两个整数 d,sd,s1d,s100001 \leq d,s \leq 10000),表示一个应用的下载大小和存储大小(单位:MB)。

输出格式

第一行输出最多可以安装的应用数量。

第二行输出这些应用的编号,并按 Sandra 应当安装它们的顺序排列。如果没有任何应用可以安装,则这一行可以省略。

应用按输入顺序从 11nn 编号。如果存在多种最优方案,输出任意一种即可

2 100
99 1
1 99
2
1 2
2 100
500 1
1 500
0

提示

【数据规模与约定】

对于所有数据,满足 1n5001 \leq n \leq 5001c100001 \leq c \leq 100001d,s100001 \leq d,s \leq 10000。如果有多种最优方案,输出任意一种即可。