Cod sursa(job #2108733)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 18 ianuarie 2018 19:17:11
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int mod=10000;

int d[100000],v[100000];

int main()
{
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);
    int n,m,x;
    scanf("%d%d%d",&n,&m,&x);
    int val=n*(n+1)/2*m*(m+1)/2;
    if(x>val or x<-val) {printf("0");return 0;}
    d[0]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int c=i*j;
            for(int k=0;k<=val;k++)
            {
                v[k]=d[k];
                if(k+c<=val) v[k]=(v[k]+d[k+c])%mod;
                if(abs(k-c)<=val) v[k]=(v[k]+d[abs(k-c)])%mod;
            }
            memcpy(d,v,sizeof(v));
        }
    printf("%d",d[abs(x)]);
    return 0;
}