暴力。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int a[100005];
int b[100005],c[100005];
int main()
{
int i,n,m,p,k,tot,cal;
cin>>n>>m>>k;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
if(m<k){
printf("NO\n");
return 0;
}
p=m;
tot=0;
cal=0;
for(i=0;i<n;i++){
if(a[i]%2==0){
b[tot++]=a[i];
}
else{
c[cal++]=a[i];
}
}
if((cal%2==0&&(m-k)%2==1)||(cal%2==1&&(m-k)%2==0)||m>n){
printf("NO\n");
return 0;
}
if((m-k)>cal){
printf("NO\n");
return 0;
}
if(m==1){
printf("YES\n");
printf("%d ",n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
if(k==0){
if(cal<m){
printf("NO\n");
}
else {
printf("YES\n");
printf("%d ",tot+1);
for(i=0;i<tot;i++)
printf("%d ",b[i]);
if(cal>0)
printf("%d\n",c[0]);
for(i=1;i<m-1;i++){
printf("1 %d\n",c[i]);
}
if(m!=1){
printf("%d ",cal-(m-1));
for(i=m-1;i<cal;i++){
printf("%d ",c[i]);
}
printf("\n");
}
}
return 0;
}
if(tot>=k){
printf("YES\n");
if(k==m){
for(i=0;i<k-1;i++)
printf("1 %d\n",b[i]);
printf("%d ",n-(k-1));
for(i=k-1;i<tot;i++)
printf("%d ",b[i]);
for(i=0;i<cal;i++)
printf("%d ",c[i]);
return 0;
}
for(i=1;i<k;i++){
printf("1 %d\n",b[i-1]);
}
printf("%d ",tot-(k-1));
for(i=k-1;i<tot;i++)
printf("%d ",b[i]);
printf("\n");
for(i=0;i<m-k-1;i++){
printf("1 %d\n",c[i]);
}
printf("%d ",cal-(m-k-1));
for(i=m-k-1;i<cal;i++)
printf("%d ",c[i]);
return 0;
}
if(tot+(n-tot)/2<k||(n-tot-(k-tot)*2)<(m-k)){
printf("NO\n");
return 0;
}
if(m==k){
if(n-tot-(k-tot-1)*2<0){
printf("NO\n");
return 0;
}
printf("YES\n");
for(i=0;i<tot;i++)
printf("1 %d\n",b[i]);
for(i=0;i<k-tot-1;i++){
printf("2 %d %d\n",c[2*i],c[2*i+1]);
}
if(n-tot-(k-tot-1)*2>0){
printf("%d ",n-tot-(k-tot-1)*2);
for(i=2*(k-tot-2)+1+1;i<cal;i++){
printf("%d ",c[i]);
}
}
return 0;
}
printf("YES\n");
for(i=0;i<tot;i++)
printf("1 %d\n",b[i]);
for(i=0;i<k-tot;i++){
printf("2 %d %d\n",c[2*i],c[2*i+1]);
}
for(i=0;i<m-k-1;i++){
printf("1 %d\n",c[2*(k-tot-1)+2+i]);
}
if(cal-(2*(k-tot-1)+2+m-k-2+1)<=0)
return 0;
printf("%d ",cal-(2*(k-tot-1)+2+m-k-2+1));
for(i=2*(k-tot-1)+2+m-k-2+1;i<cal;i++)
printf("%d ",c[i]);
}
本文探讨了一种解决特定数值序列中组合问题的方法,通过分析序列特性,判断是否存在符合条件的组合,进而输出相应的组合形式。
1277

被折叠的 条评论
为什么被折叠?



