Cod sursa(job #2108721)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 18 ianuarie 2018 19:03:06
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>

using namespace std;

const int val=44100,mod=10000;

int d[2*val+10],d1[2*val+10];

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>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++)
                if(k-c>=0) d1[k-c]=(d1[k-c]+d[k])%mod;
            for(int k=2*val;k>=0;k--)
            {
                if(k+c<=2*val) d[k+c]=(d[k+c]+d[k])%mod;
                d[k]=(d[k]+d1[k])%mod;
                d1[k]=0;
            }
        }
    printf("%d",d[x+val]);
    return 0;
}