Cod sursa(job #34532)
#include <stdio.h>
#include <string.h>
#define input "diamant.in"
#define output "diamant.out"
long n,m,x,s,i,j,k;
long s1[100000],s2[100000];
#define rest 10000
#define origine 50000
void citire()
{
FILE *fin;
fin=fopen(input,"r");
fscanf(fin,"%ld %ld %ld",&n,&m,&x);
fclose(fin);
}
void solve()
{
s2[origine]=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
for (k=origine-44100;k<=origine+44100;k++)
s1[k]=s2[k];
memset(s2,0,sizeof(s2));
for (k=origine-44100;k<=origine+44100;k++)
{
if (k-i*j>=origine-44100)
s2[k]=s1[k-i*j];
s2[k]+=s1[k];
if (k+i*j<=origine+44100)
s2[k]+=s1[k+i*j];
s2[k]%=rest;
}
}
}
long modul(long x)
{
if (x) return x;
return -x;
}
void afisare()
{
FILE *fout;
long sol=0;
fout=fopen(output,"w");
if (modul(x)>44100) sol=0;
else sol=s2[origine+x];
fprintf(fout,"%ld",sol);
fclose(fout);
}
int main()
{
citire();
solve();
afisare();
return 0;
}