Cod sursa(job #892347)

Utilizator timicsIoana Tamas timics Data 26 februarie 2013 02:14:29
Problema Diamant Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
int X,M,N,s[410][100000];
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)])%10000;
            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)])%10000;
        }
    }
    printf("%d",s[M*N][X]);
    return 0;
}