CF203C Photographer

题目描述

Valera 一直梦想成为一名摄影师,于是买了一台新相机。每天找他拍照的客户越来越多,终于有一天,Valera 需要一个程序来确定他一天最多能为多少位客户服务。 相机的内存为 $d$ 兆字节。Valera 的相机可以拍摄高质量照片和低质量照片。一张低质量照片占用 $a$ 兆字节内存,一张高质量照片占用 $b$ 兆字节内存。出于某种原因,每位客户都要求拍摄多张低质量照片和多张高质量照片。更正式地说,第 $i$ 位客户要求拍摄 $x_{i}$ 张低质量照片和 $y_{i}$ 张高质量照片。 Valera 希望在让客户满意的前提下,每天为尽可能多的客户服务。要让第 $i$ 位客户满意,他必须完成客户所有要求,即拍摄 $x_{i}$ 张低质量照片和 $y_{i}$ 张高质量照片。拍摄一张低质量照片时,必须保证相机至少有 $a$ 兆字节可用内存。同理,拍摄一张高质量照片时,必须保证相机至少有 $b$ 兆字节可用内存。最初,相机内存为空。Valera 不会删除相机里的照片,因此内存会逐渐被占满。 计算 Valera 最多可以成功服务的客户数量,并输出这些客户的编号。

输入格式

第一行包含两个整数 $n$ 和 $d$($1 \leq n \leq 10^{5},\ 1 \leq d \leq 10^{9}$),分别表示客户数和相机的内存大小。 第二行包含两个整数 $a$ 和 $b$($1 \leq a \leq b \leq 10^{4}$),分别表示一张低质量照片和一张高质量照片所占用的内存。 接下来的 $n$ 行,每行描述一位客户。第 $i$ 行包含两个整数 $x_{i}$ 和 $y_{i}$($0 \leq x_{i}, y_{i} \leq 10^{5}$),分别表示这位客户要求的低质量照片和高质量照片张数。 所有行内的数字均由单个空格分隔。

输出格式

第一行输出 Valera 最多成功服务的客户数量。 第二行输出这些客户的编号,顺序任意,所有编号互不相同。如果有多组答案,输出任意一组即可。客户编号从 $1$ 开始,按照输入顺序编号。

说明/提示

由 ChatGPT 5 翻译