Pagini recente » Autentificare | Cod sursa (job #2169683) | Cod sursa (job #907514) | Cod sursa (job #1703721) | Cod sursa (job #2024155)
#include <cstdio>
#include <algorithm>
const int MAXN = 20;
const int MAXX = 4e4 + 4e3;
const int MOD = 1e4;
int v[MAXN * MAXN], d[2][2 * MAXX];
int main() {
int n, m, k, s, x;
FILE *f = fopen("diamant.in", "r");
fscanf(f, "%d%d%d", &n, &m, &x);
fclose(f);
f = fopen("diamant.out", "w");
if (x + MAXX < 0 || MAXX <= x) {
fprintf(f, "0\n");
} else {
k = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
v[++k] = i * j;
}
}
std::sort(v + 1, v + k + 1);
d[0][MAXX] = 1;
s = 0;
for (int i = 1; i <= k; ++i) {
s += v[i];
int p = i % 2;
for (int c = MAXX - s; c <= MAXX + s; ++c) {
d[p][c] = (d[1 - p][c + v[i]] + d[1 - p][c - v[i]] + d[1 - p][c]) % MOD;
}
}
fprintf(f, "%d\n", d[(n * m) % 2][MAXX + x]);
}
fclose(f);
return 0;
}