Cod sursa(job #1956608)

Utilizator george_stelianChichirim George george_stelian Data 6 aprilie 2017 21:25:31
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
using namespace std;

const int mod=10000;
int d[100010],d1[100010];

#define d (d+45000)
#define d1 (d1+45000)

int main()
{
    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);
    int n,m,x,s=0;
    scanf("%d%d%d",&n,&m,&x);
    d[0]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            for(int k=-s;k<=s;k++)
            {
                d1[k-i*j]=(d1[k-i*j]+d[k])%mod;
                d1[k]=(d1[k]+d[k])%mod;
                d1[k+i*j]=(d1[k+i*j]+d[k])%mod;
            }
            s+=i*j;
            for(int k=-s;k<=s;k++)
            {
                d[k]=d1[k];
                d1[k]=0;
            }
        }
    if(x<-s || s<x) printf("0");
    else printf("%d",d[x]);
    return 0;
}