塔塔商店里只卖两种商品,“塔可乐“和“塔马克”。
现在有n个人来到商店购物,第i个人有一个喜好区间[li,ri]和购买目标商品,他只看货架上位于区间里的商品,并从中挑选ki个保质期最长的塔可乐或者塔马克买走(如果有多个商品保质期相同,他会拿走区间中靠前的那个)。你能告诉塔塔每个人买走的商品编号吗。
第一行输入两个整数n和m(1≤n,m≤105)代表来塔塔商店购物的人数和商品数量。
第二行输入m个整数a1,a2,...,am(1≤ai≤109)代表商品的保质期。
第三行输入m个整数b1,b2,...,bm(0≤bi≤1)代表商品的种类,其中,bi=0代表"塔可乐"、bi=1代表"塔马克''。
此后n行,第i行输入四个整数li,ri,ti;和k(1≤li≤ri≤m;0≤ti≤1;1≤ki≤m)代表第i个人的喜好区间、购买商品和购买件数。其中,ti=0代表他想要购买“塔可乐”、ti=1代表他想要购买“塔马克”。
输出n行,第i行包含至多ki个整数,代表第i个人购买的商品编号(如果有多个商品保质期相同,输出编号较小的那个),你需要按照从小到大的顺序依次输出;如果没有买到足够的商品,使用一个−1替代。
输入
5 5
2 3 4 5 6
1 1 0 1 1
1 3 1 2
1 3 1 2
1 3 0 5
1 5 1 1
1 5 0 1
输出
2 1
-1
3 -1
5
-1
说明
●第一次询问,货架上的情况为2,3,∗,5,6 (∗代表非目标商品,下划线代表喜好区间),先买第二件,再买第一件;
●第二次询问,货架上的情况为{x,x,∗,5,6}(x代表已售罄商品),此时无法购买,直接输出−1;
●第三次询问,货架上的情况为{∗,∗,4,5,6}由于只剩一件商品,故先购买第三件,后输出−1代表没有买到足够数量的商品。
扫码备注加群即可,期待您的到来~
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.