Cod sursa(job #379231)

Utilizator DraStiKDragos Oprica DraStiK Data 30 decembrie 2009 23:47:21
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <algorithm>
using namespace std;

#define DIM 45000
#define MOD 10000

int a[2*DIM+5],b[2*DIM+5];
int n,m,x,sum;

int check ()
{
    int i,j;

    for (i=1; i<=n; ++i)
        for (j=1; j<=m; ++j)
            sum+=i*j;
    if (x>sum || x<-sum)
        return 0;
    return 1;
}

void solve ()
{
    int i,j,k;

    b[sum]=1;
	for (i=1; i<=n; ++i)
		for (j=1; j<=m; ++j)
		{
            for (k=-sum; k<=sum; ++k)
                a[k+sum]=(b[k+i*j+sum]+b[k+sum]+b[k-i*j+sum])%MOD;
            for (k=-sum; k<=sum; ++k)
                b[k+sum]=a[k+sum];
		}
    printf ("%d",a[x+sum]);
}

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

    scanf ("%d%d%d",&n,&m,&x);
    if (check ())
        solve ();
    else
        printf ("0");

    return 0;
}