Pagini recente » Profil poepi | Istoria paginii runda/ddd/clasament | Monitorul de evaluare | Istoria paginii arbori-de-intervale | Cod sursa (job #1551178)
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 45050
#define MOD 10000
using namespace std;
int n, m, x, a[MAXN], b[MAXN];
int k = 0;
inline int abs(int x) { return x < 0 ? -x : x; }
void solve()
{
a[0] = 1;
b[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
int val = i*j;
for (int ind = k; ind >= -k; ind--)
{
int upper = abs(ind+val);
int lower = abs(ind);
b[upper] = (b[upper] + a[lower])%MOD;
}
b[0] = (b[0] + a[val])%MOD;
k += val;
memcpy(a, b, sizeof(a));
}
}
int main()
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d", &n, &m, &x);
x = abs(x);
solve();
if (x <= k)
printf("%d", a[x]);
else
printf("0");
return 0;
}