Pagini recente » Cod sursa (job #280022) | Cod sursa (job #510588) | Cod sursa (job #2475873) | Cod sursa (job #1084021) | Cod sursa (job #20947)
Cod sursa(job #20947)
#include <stdio.h>
#include <fstream.h>
struct cuv { unsigned char lit[255],nrc; }; // 255
cuv a[250][130]; //250 130
int b[250][500]; // 250 500
int n,k,i,j,l,m,s;
char c;
FILE *fin;
ofstream fout("prop.out");
void dorite(int li,int lj)
{
if (li>0)
{
dorite(li-1,lj-a[li-1][b[li][lj]-1].nrc);
if (li==n)
{ fout<<a[li-1][b[li][lj]-1].lit<<"\n";
return;
}
fout<<a[li-1][b[li][lj]-1].lit<<" ";
}
return;
}
int main()
{
fin = fopen("prop.in", "rt");
// CITIREA
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&k);
fgetc(fin);
for (i=0;i<n;i++)
{ c='a';
l=-1;
while (c!='\n'&&!feof(fin))
{ c='a';
l++;
m=0;
while (1)
{
c=fgetc(fin);
if (c==' '||c=='\n'||feof(fin)) break;
a[i][l].lit[m++]=c;
a[i][l].nrc++;
}
if (i!=n-1)
a[i][l].nrc++;
}
}
for (i=1;i<=n;i++)
for (s=1;s<=k;s++)
{ j=0;
while (a[i-1][j].nrc!=0)
{ if (s-a[i-1][j].nrc>=0&&(b[i-1][s-a[i-1][j].nrc]>0||(i==1&&s==a[i-1][j].nrc)))
{ b[i][s]=j+1;
break;
}
j++;
}
}
if (b[n][k]==0)
fout<<0<<'\n';
else
{
dorite(n,k);
}
return 0;
}