Pagini recente » Profil MihneaGhira | Cod sursa (job #2205556) | Cod sursa (job #214731) | Cod sursa (job #1542092) | Cod sursa (job #73543)
Cod sursa(job #73543)
#include<stdio.h>
#define Nmax 105
int CA[Nmax][Nmax],CN[Nmax][Nmax];
int main()
{
FILE *fin=fopen("pavare2.in","r"),
*fout=fopen("pavare2test.out","w");
int N,A,B,K,i,j,k;
fscanf(fin,"%d%d%d%d",&N,&A,&B,&K);
if(K==1) for(;;);
CA[N][1]=1;
CN[N][1]=1;
for(i=N;i;i--)
{
//alb
for(j=2;j<=A;j++)
CA[i][j] = CA[i+1][j-1];
for(j=1;j<=B;j++)
CA[i][1] += CN[i+1][j];
//negru
for(j=2;j<=B;j++)
CN[i][j] = CN[i+1][j-1];
for(j=1;j<=A;j++)
CN[i][1] += CA[i+1][j];
}
for(j=A-1;j;j--) CA[1][j] += CA[1][j+1];
CN[1][0] = CA[1][1];
for(j=1;j<=B;j++) CN[1][j] += CN[1][j-1];
for(i=2;i<=N;i++)
{
for(j=A-1;j;j--) CA[i][j] += CA[i][j+1];
for(j=2;j<=B;j++) CN[i][j] += CN[i][j-1];
}
fprintf(fout,"%d\n",CN[1][B]);
//prima valoare
int ult;
i=1;
for(j=A;j;j--)
if(CA[i][j] >= K)
break;
if(j == 0)
{
for(j=1;j<=B;j++)
if(CN[i][j] >= K)
break;
for(k=1;k<=j;k++)
fprintf(fout,"1");
ult=1;
K-=CN[i][j-1];
i+=j;
}
else
{
for(k=1;k<=j;k++)
fprintf(fout,"0");
ult=0;
K-=CA[i][j+1];
i+=j;
}
for(;i<=N;i++)
if(ult)
{//caut alb
for(j=A;j;j--)
if(CA[i][j] >= K)
break;
for(k=1;k<=j;k++) fprintf(fout,"0");
K-=CA[i][j+1];
i+=j-1;
ult=0;
}
else
{//caut negru
for(j=1;j<=B;j++)
if(CN[i][j] >= K)
break;
for(k=1;k<=j;k++) fprintf(fout,"1");
K-=CN[i][j-1];
i+=j-1;
ult=1;
}
fprintf(fout,"\n\n");
for(i=1;i<=N;i++)
{
for(j=1;j<=A;j++)
fprintf(fout,"%d ",CA[i][j]);
fprintf(fout,"\n");
}
fprintf(fout,"\n\n");
for(i=1;i<=N;i++)
{
for(j=1;j<=B;j++)
fprintf(fout,"%d ",CN[i][j]);
fprintf(fout,"\n");
}
fclose(fin);
fclose(fout);
return 0;
}