Pagini recente » Cod sursa (job #654868) | Cod sursa (job #452444) | Cod sursa (job #3183460) | Cod sursa (job #1544620) | Cod sursa (job #36832)
Cod sursa(job #36832)
# include <stdio.h>
# include <string.h>
# define _fin "pavare2.in"
# define _fout "pavare2.out"
# define maxn 101
int n, a, b, k, K,
w[maxn][maxn], bl[maxn][maxn],
i, j, l, ns,
sol[maxn], set[maxn], wh;
int main()
{
freopen(_fin, "r", stdin);
freopen(_fout,"w", stdout);
scanf("%d%d%d%d", &n, &a, &b, &k);
w[1][1]=bl[1][1]=1;
for (i=2; i<=n; i++)
{
for (j=2; j<=a; j++) w[i][j]+=w[i-1][j-1];
for (j=2; j<=b; j++) bl[i][j]+=bl[i-1][j-1];
for (j=1; j<=b; j++) w[i][1]+=bl[i-1][j];
for (j=1; j<=a; j++) bl[i][1]+=w[i-1][j];
}
for (i=1; i<=a; i++) ns += w[n][i];
for (i=1; i<=b; i++) ns += bl[n][i];
printf("%d\n", ns);
//for (K=1; K<=ns; K++)
//{
// k=K;
// memset(sol, 0, sizeof(sol)), memset(set, 0, sizeof(set));
for (i=n; i>=1; i--)
{
for (j=a; j>=1; j--)
if ( w[i][j] >= k ) {
// punem o secventa 0...01
for (l=1; l<=j; l++, i--)
sol[i]=0, set[i]=1;
sol[i]=set[i]=1;
break;
}
else k-=w[i][j];
for (j=1; j<=b; j++)
if ( bl[i][j] >= k ) {
for (l=1; l<=j; l++, i--)
sol[i]=set[i]=1;
i++;
break;
}
else k-=bl[i][j];
}
// printf("%d\n", ns);
for (i=n; i>=1; i--) printf("%d", sol[i]);
printf("\n");
//}
return 0;
}