Cod sursa(job #1097223)

Utilizator TodeaDariustodea darius TodeaDarius Data 3 februarie 2014 11:05:05
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,x,xmax,a[45100],b[45100];
#define mod 10000
int nat(int val)
{
    if(val<0)
        val=-val;
    return val;
}
int main()
{
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);

    scanf("%d%d%d",&n,&m,&x);
    if(x>44100 || x<-44100)
    {
        printf("0");
        return 0;
    }
    xmax=n*(n+1)*m*(m+1)/4;
    a[0]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            for(int k=0;k<=xmax;k++)
                b[k]=(a[nat(k-i*j)]+a[k]+a[k+i*j])%mod;
            memcpy(a,b,sizeof(b));
        }
    printf("%d\n",a[nat(x)]%mod);
    return 0;
}