Cod sursa(job #13099)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 5 februarie 2007 17:30:41
Problema Pavare2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>

#define max(a,b) (((a)>(b)) ? (a) : (b))
#define NMAX 101

long long i,j,n,m,A[NMAX][NMAX][1],a,b,k,kk;

/* A[i][j][0] = numerul de posibilitati de a pava i metri cu primii j albi */
/* A[i][j][1] = numerul de posibilitati de a pava i metri cu primii j negri */

int main()
{
 freopen("pavare2.in","r",stdin);
 freopen("pavare2.out","w",stdout);

 scanf("%ld%ld%ld%ld",&n,&a,&b,&kk);

 //Initializing data
/* A[0][1][0]=1; A[0][1][1]=1;*/ A[1][1][0]=1; A[1][1][1]=1;

 //Recurente

 for (i=2;i<=n;i++)
 for (j=1;j<=i;j++)
    {
     long long sum=0;
     for (k=1;k<=(i-j)|| k<=(a-j-1);k++)
        sum+=A[i-j][k][0];
     for (k=1;k<=(i-j)|| k<=b;k++)
        sum+=A[i-j][k][1];

     A[i][j][0]=sum;

     sum=0;
     for (k=1;k<=(i-j)||k<=a;k++)
        sum+=A[i-j][k][0];
     for (k=1;k<=(i-j)||k<=(b-j-1);k++)
        sum+=A[i-j][k][1];

     A[i][j][1]=sum;
    }

 int rez=0;
 for (i=1;i<=a;i++)
    rez+=A[n][i][0];
 for (i=1;i<=b;i++)
    rez+=A[n][i][1];
 printf("%ld\n",rez);

 for (i=1;i<=a;i++)
    printf("0");
 for (i=1;i<=b;i++)
    printf("1");

 fclose(stdin);
 fclose(stdout);

 return 0;
}