CF161B Discounts

题目描述

超市进行优惠活动,顾客如果在一架购物车中放上一个凳子,他就可以半价买掉这架购物车里最便宜的商品(一架购物车中只能让一个东西半价)。 现在$\mathrm{Polycarpus}$要用$k$架购物车(容量无限,但不能有空车)装要买的$n$件商品,里面有一些是凳子。$\mathrm{Polycarpus}$希望用最少的钱来买这些东西。

输入格式

第一行两个整数$n$、$k$; 第$2$行至第$n+1$行,每行两个整数$c_i$、$t_i$,其中$c_i$表示商品$i$的价格,$t_i$表示类型($1$表示它是凳子,$2$表示它不是凳子)

输出格式

第一行输出一个**一位小数**,表示折扣之后最少需要付的价格。 接下来的kkk行,每行开头输出一个整数$a_i$表示购物车$i$中商品的数量,后面跟着$a_i$个整数$b_1,b_2,...,b_j,...,b_{a_i}$表示商品的编号($1\leq b_j\leq n$)。 方案可能有很多,输出其中一种即可。购物车和商品的输出顺序不作要求。

说明/提示

在样例$1$中,购物车有$2$架,其中一架装商品$1$(凳子)和$2$(其他),另一架装商品$3$(凳子),这样安排便可以使价格最低。 对于$100\%$的数据,$1\leq n,k\leq 10^3$,$1\leq c_i\leq 10^9$,$1\leq t_i\leq 2$。