CF767D Cartons of milk

题目描述

Olya 非常喜欢牛奶。她每天会喝 $k$ 盒牛奶,如果冰箱里至少有 $k$ 盒就喝 $k$ 盒,不足 $k$ 盒就全喝掉。但是有个问题——保质期。每盒牛奶都有一个过期日期,过了这个日期就不能再喝了(在当天还是可以喝的)。因此,如果 Olya 的冰箱里有牛奶已经过期,她会把它扔掉。 Olya 讨厌扔牛奶,所以每次喝牛奶时,她会优先选择最早过期的牛奶。这种策略可以理解为最小化被扔掉的牛奶数量,如果有可能的话,她甚至可以一点都不浪费。 Olya 面临的主要问题是如何买新牛奶。目前,她冰箱里已有 $n$ 盒牛奶,每一盒的过期天数都已知(距离过期还剩多少天)。她在逛的商店里一共有 $m$ 盒牛奶,每盒的保质期也已知。 请你计算 Olya 最多可以买多少盒牛奶,才能保证没有任何牛奶被扔掉。假设今天她还没有喝任何牛奶。

输入格式

第一行包含三个整数 $n、m、k$($1\leq n,m\leq 10^6$,$1\leq k\leq n+m$),分别表示 Olya 冰箱里的牛奶盒数、商店里牛奶盒数和她每天日饮数量。 第二行包含 $n$ 个整数 $f_1, f_2, ..., f_n$($0 \leq f_i \leq 10^7$),表示 Olya 冰箱里每盒牛奶的剩余保质天数。例如,$0$ 表示今天必须喝,$1$ 表示最晚明天喝,依此类推。 第三行包含 $m$ 个整数 $s_1, s_2, ..., s_m$($0 \leq s_i \leq 10^7$),表示商店牛奶的保质天数,格式同上。

输出格式

如果 Olya 现有牛奶就已经无法做到不扔掉牛奶,输出 $-1$。 否则,第一行输出最多可以买的牛奶盒数 $x$,使得不会有任何牛奶被浪费。第二行输出恰好 $x$ 个正整数,表示应该购买的牛奶在输入中的编号(从 $1$ 开始编号,顺序任意、不可重复)。如果存在多种方案,输出任意一种均可。

说明/提示

在第一个样例中,$k=2$,Olya 有三盒牛奶,保质天数分别为 $0、1、1$(它们将分别在今天和明天过期),商店里有三盒牛奶,保质天数为 $0$、两盒为 $2$。Olya 可以购买三盒牛奶,比如一盒保质期为 $0$ 的和两盒保质期为 $2$ 的。 在第二个样例中,Olya 现有的三盒牛奶全部今天过期,因此无论买不买新的都会导致牛奶浪费。 在第三个样例中,Olya 今天会喝掉 $k=2$ 盒牛奶(包括一盒冰箱里的和一盒商店买的),剩下的明天喝掉。 由 ChatGPT 5 翻译