Cod sursa(job #361501)

Utilizator MKLOLDragos Ristache MKLOL Data 5 noiembrie 2009 15:08:06
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#define Nmax 501000
#define Plus Nmax/2
int N,M,x,k=1,p=0,p1=1,aux,max;
int nr[2][Nmax];

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

scanf("%d %d %d",&N,&M,&x);
for(int i=1;i<=N;++i)
    for(int j=1;j<=M;++j)
            {

            max=max+i*j;

            }
    if(max<x||x<-max)
    {
    printf("0\n");
    return 0;
    }
    else if(x==max||x==-max)
    {
        printf("1\n");
        return 0;
    }
    nr[0][0+Plus]=1;

    for(int i=1;i<=N;++i)
        for(int j=1;j<=M;++j)
        {
        aux=p1;
        p1=p;
        p=aux;
        for(int q=N*M+10005;q>=-(N*M)-10005;--q)
        {

        nr[p][q+Plus]=nr[p1][q+Plus]+nr[p1][q+Plus+i*j]+nr[p1][q+Plus-i*j];
        nr[p][q+Plus]=nr[p][q+Plus]%10000;

        }


        }


printf("%d\n",nr[p][x+Plus]);

return 0;
}