Pagini recente » Cod sursa (job #1211385) | Cod sursa (job #2495024) | Cod sursa (job #2170691) | Cod sursa (job #676446) | Cod sursa (job #176516)
Cod sursa(job #176516)
// Diamant, Infoarena/ONI 2006
// http://infoarena.ro/problema/diamant
#include <cstdio>
const int XMAX = 44101;
const int MOD = 10000;
int n, m, x;
int Ans[2][2 * XMAX];
inline int ind(int c) {
return c + XMAX;
}
int main() {
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d", &m, &n, &x);
int i, j, s, c, xmax = 0;
Ans[0][ind(0)] = 1;
for (s = 0; s < m * n; ++ s) {
i = s / n + 1;
j = s % n + 1;
xmax += i * j;
for (c = -xmax; c <= xmax; ++ c) {
Ans[(s + 1) % 2][ind(c)] = ( Ans[(s + 1) % 2][ind(c)] + Ans[s % 2][ind(c)] ) % MOD;
Ans[(s + 1) % 2][ind(c + i * j)] = ( Ans[(s + 1) % 2][ind(c + i * j)] + Ans[s % 2][ind(c)] ) % MOD;
Ans[(s + 1) % 2][ind(c - i * j)] = ( Ans[(s + 1) % 2][ind(c - i * j)] + Ans[s % 2][ind(c)] ) % MOD;
}
}
printf("%d\n", Ans[(m * n) % 2][ind(x)]);
return 0;
}