Pagini recente » Cod sursa (job #1214203) | Cod sursa (job #2839240) | Cod sursa (job #2768348) | Cod sursa (job #2266665) | Cod sursa (job #20953)
Cod sursa(job #20953)
#include <stdio.h>
#include <fstream.h>
struct cuv { unsigned char lit[225],nrc; }; // 255
cuv a[225][115]; //250 130
unsigned char b[225][450]; // 250 500
int n,k,i,j,l,m,s;
char c;
FILE *fin;
ofstream fout("prop.out");
void dorite(unsigned char li,unsigned char 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;
}