CF161B Discounts

题目描述

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

输入格式

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

输出格式

第一行输出一个**一位小数**,表示折扣之后最少需要付的价格。 接下来的 $k$ 行,每行开头输出一个**正整数** $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 k \le n \leq 10^3$,$1\leq c_i\leq 10^9$,$1\leq t_i\leq 2$。