Cod sursa(job #379215)

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

#define DIM 100000
#define MOD 10000

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

int check ()
{
    int i,j,sum=0;

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

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

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

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;
}