Cod sursa(job #831434)

Utilizator ericptsStavarache Petru Eric ericpts Data 8 decembrie 2012 17:08:21
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
using namespace std;
const int mod = 10000;
int obt[2][1<<16];

inline int abs(int a)
{
    if(a>=0)
        return a;
    return -a;
}

int query(int n,int m,int x)
{
    int i,j,k;
    if(x >= 50000 || x <= -50000)
        return 0;
    bool c =0;
    obt[!c][0]=1;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j,c^=1)
            for(k=0;k<=x;++k)
            {
                obt[c][k] = obt[!c][k+i*j] + obt[!c][k] + obt[!c][abs(k-i*j)];
                obt[c][k] %= mod;
            }
    return obt[c][x];
}

int main()
{
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);
    int n,m,x;
    scanf("%d %d %d",&n,&m,&x);
    if(x < 0)
        x=-x;
    printf("%d",query(n,m,x));
    return 0;
}