CF439C Devu and Partitioning of the Array

题目描述

Devu 是个小孩,他非常喜欢玩耍,但只喜欢和数组玩。在玩耍的过程中,他想到一个有趣的问题却无法解决,你能帮他解答吗? 给定一个由互不相同的整数构成的数组。是否可以将整个数组划分为 $k$ 个互不相交且非空的部分,使得其中有 $p$ 个部分的元素和为偶数(每一部分的和必须为偶数),其余 $k-p$ 个部分的和为奇数?(注意,这些部分不要求连续。) 如果可以,请给出一种符合要求的划分方案。

输入格式

第一行包含三个用空格分隔的整数 $n$、$k$、$p$($1 \leq k \leq n \leq 10^{5};\ 0 \leq p \leq k$)。 第二行包含 $n$ 个用空格分隔的互不相同的整数,表示数组 $a$ 的内容:$a_{1}, a_{2}, ..., a_{n}$($1 \leq a_{i} \leq 10^{9}$)。

输出格式

若存在满足条件的划分,请在第一行输出 "YES"(不含引号); 否则输出 "NO"(不含引号)。 如果存在要求的划分方式,请在第一行后输出 $k$ 行,每行表示一部分的内容。第 $i$ 行首先输出该部分的元素个数,然后以任意顺序输出该部分所有元素。划分中必须恰好有 $p$ 个部分和为偶数,其余 $k-p$ 个部分和为奇数。 若存在多种划分方式,你可以输出任意一种合法的方案。

说明/提示

由 ChatGPT 5 翻译