Cod sursa(job #892344)

Utilizator timicsIoana Tamas timics Data 26 februarie 2013 02:09:20
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int X,M,N,s[410][45000];
int main()
{
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);
    scanf("%d%d%d",&N,&M,&X);
    X=X+N*M*(M+1)*(N+1)/4;
    s[1][0]=1;
    s[1][1]=1;
    s[1][2]=1;
    for(int i=2;i<=N*M;++i)
    {
        for(int j=0;j<=N*M*(M+1)*(N+1)/2;++j)
        {
            s[i][j]=s[i-1][j];
            if(j-((i-1)/M +1)*((i-1)%M+1)>=0)
                s[i][j]=s[i][j]+s[i-1][j-((i-1)/M +1)*((i-1)%M+1)];
            if(j-2*((i-1)/M +1)*((i-1)%M+1)>=0)
                s[i][j]=s[i][j]+s[i-1][j-2*((i-1)/M +1)*((i-1)%M+1)];
        }
    }
    printf("%d",s[M*N][X]);
    return 0;
}