CF913D Too Easy Problems
题目描述
你正在准备一场关于调度理论的考试。
这场考试会持续正好 $T$ 毫秒,由 $n$ 道题目组成。
你可以用 $t_i$ 毫秒解决第 $i$ 个问题,或者忽略它并不消耗时间。你也不需要用来在做完一道题之后休息的时间。
不幸的是,你的老师认为一些题目对你来说太简单了。因此,他对于每道题 $i$ 规定了一个整数 $a_i$,表示题目 $i$ 只在你总共解决了不超过 $a_i$ 个问题(包括问题 $i$ )的情况下为你的最终成绩加上一分。
正式地,假设你在考试中解决了问题 $p_1,p_2,\cdots,p_k$。那么,你的最终成绩 $s$ 会等于在 $1$ 到 $k$ 之间的满足 $k\le a_{p_j}$ 的 $j$ 的个数。
你已经意识到这场考试真正的第一道题目已经放在了你面前。因此,你想要选择一组题目来解决,从而最大化你的最终成绩。不要忘记这场考试有时间限制,而你必须有足够的时间来解决所有你选择的题目。如果存在多个最优解,任意输出一组即可。
输入格式
第一行包含 $2$ 个整数,$n$ 和 $T$,分别是考试中题目的数量和考试时长的毫秒数。
接下来的 $n$ 行每行包括两个整数 $a_i$ 和 $t_i$。题目编号从 $1$ 到 $n$。
输出格式
在第一行,输出一个单独的整数 $s$,表示你的可能得到的最终成绩的最大值。
在第二行,输出一个单独的整数 $k$ 表示你应该解决的问题数量。
在第三行,以任意顺序输出 $k$ 个不同整数 $p_1,p_2,\cdots,p_k$,即你应当解决的题目编号。
如果有多个最优解,你可以输出其中任意一个。
## 样例解释
在第一个样例中,你应该解决题目 $3$、$1$ 和 $4$。在这种解下你会花费 $80+100+90=270$ 毫秒,在考试的长度 $300$ms 以内(甚至给自己留出了 $30$ms 休息时间)。题目 $3$ 和题目 $1$ 会分别为你带来 $1$ 分,然而题目 $4$ 不会。你会得到 $2$ 分。
在第二个样例中,这场灾难性的考试的长度甚至不足以解决一道题目(所以你显然一分都得不到)。
在第三个样例中,你刚好有足够的时间 $(42+58=100)$ 来解决这两道题并且微笑着把答卷交给老师。
说明/提示
$1\le n\le 2\times10^5$
$1\le T\le10^9$
$0\le k\le n$