Pagini recente » Cod sursa (job #1810617) | Cod sursa (job #827248) | Cod sursa (job #1591248) | Cod sursa (job #2054180) | Cod sursa (job #20824)
Cod sursa(job #20824)
#include<stdio.h>
#define Nmax 251
#define Cmax 501
#define Cuvmax 130
char s[Nmax][Cmax];
int P[Nmax][Cuvmax];
int c[Nmax][Cmax];
int prec[Nmax][Cmax];
int n,k;
void rmksol(int i,int j)
{
int ii,jj,l;
if( prec[i][j] ) rmksol( i-1 , prec[i][j] ) ;
for( jj=0,l=0 ; s[i][jj] ; jj ++ )
if( 'a'<=s[i][jj] && s[i][jj]<='z' ) l++;
else
{
if( l == j-prec[i][j] )
{
for( ii = jj - l ; ii < jj ; ii ++ )
printf("%c",s[i][ii]);
l=0;
break;
}
l=0;
}
if( l == j-prec[i][j] )
for( ii = jj - l ; ii < jj ; ii ++ )
printf("%c",s[i][ii]);
printf(" ");
}
int main()
{
int i,j,l;
freopen("prop.in","r",stdin);
freopen("prop.out","w",stdout);
scanf("%d%d",&n,&k);
getc(stdin);
k=k-n+1;
for ( i = 0 ; i < n ; gets(s[i++]) ) ;
for(i=0;i<n;i++)
{
for( j=0,l=0 ; s[i][j] ; j ++ )
if( 'a'<=s[i][j] && s[i][j]<='z' ) l++;
else
if( l ) P[i][ ++P[i][0] ] = l, l=0;
if( l ) P[i][ ++P[i][0] ] = l, l=0;
}
for(j=1;j<=P[0][0];j++)
c[0][ P[0][j] ] =1;
for( i=1 ; i < n; i ++ )
for( j=i; j <= k ; j ++ )
for( l = 1; l <= P[i][0] ; l ++)
if( j-P[i][l]>0 && c[i-1][j-P[i][l]] )
{
c[i][j]=1;
prec[i][j]=j-P[i][l];
l=P[i][0]+1;
}
if( c[n-1][k] == 0 ) { printf("0\n"); return 0; }
rmksol(n-1,k);
printf("\n");
return 0;
}