Cod sursa(job #2108730)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 18 ianuarie 2018 19:14:41
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <cstring>

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[val]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int c=i*j;
            for(int k=0;k<=2*val;k++)
            {
                v[k]=d[k];
                if(k+c<=2*val) v[k]=(v[k]+d[k+c])%mod;
                if(k-c>=0) v[k]=(v[k]+d[k-c])%mod;
            }
            memcpy(d,v,sizeof(v));
        }
    printf("%d",d[x+val]);
    return 0;
}