上集说到Morning_X在各位聪明的ACMer帮助下成功的在数学课上装了一把13,Morning_X为了犒劳自己决定赏自己几个自己最喜欢吃的苹果。Morning_X每天至少会吃K个苹果,如果Morning_X有K苹果他就会吃掉K个,如果苹果数量不够K个,他就会把苹果全部吃掉;然而有一个很大的问题就是Morning_X的苹果居然是有保质期的,他必须在保质期之前把苹果吃掉,如果苹果过了保质期他就把苹果扔掉。
Morning_X非常讨厌把苹果扔掉,所以Morning_X每次吃苹果的时候他都会选择最靠近保质期的苹果去吃,各位聪明的ACMer应该都懂得这个道理,就是为了尽量减少苹果的损失。
现在主要的问题是Morning_X要去买新的苹果,现在Morning_X的冰箱里有n个苹果,每一个苹果的保质期都是已知的(苹果的保质期以天为单位),在商店里有m个苹果,苹果的保质期也是已知的。找到Morning_X能买的最大数量的苹果,保证Morning_X不用丢掉任何的苹果,并且Morning_X今天因为这个问题他决定吃掉K个苹果;
第一行有三个数n,m,k(1 ≤ n, m ≤ 106, 1 ≤ k ≤ n + m) — 分别代表代表冰箱里苹果的数量,商店里苹果的数量,Morning_X每天要吃的苹果数量;
在第二行输入n个数f1, f2, ..., fn (0 ≤ fi ≤ 107) — 在冰箱里Morning_X的苹果的保质期(如果保质期是0则代表今天就要把苹果吃掉,如果是1则代表可以在明天吃掉);
第三行输入m个数s1, s2, ..., sm (0 ≤ si ≤ 107) —代表在商店里的苹果的保质期;
如果没有办法吃Morning_X在冰箱里的苹果则输出-1;
否则,第一行输出Morning_X所需要买的最大苹果数,以便于他不用丢掉苹果
第二行则输出苹果的编号(编号在输入时以确定,第一个为 1),编号不可以重复,但可以以任意顺序打印,如果有多种结果输出任意一种结果即可
3 6 2
1 0 1
2 0 2 0 0 2
3
1 2 3
3 1 2
0 0 0
1
-1
2 1 2
0 1
0
1
1
Note 第一个样例:k=2,Morning_X在冰箱里三个苹果保质期分别为0,1,1;在商店里有3个苹果保质期分别为0和3和2,Morning_X可以买3个苹果,分别为保质期为0,2,2; 第二个样例:Morning_X拥有的苹果都会在今天到期,所以无论他是否购买额外的他都必须把牛奶扔掉; 第三个样例:在第三个例子Morning_X今天喝k = 2盒(一个是在在冰箱和一个从商店),剩下一个留到明天