Pagini recente » Cod sursa (job #1572626) | Cod sursa (job #2901695) | Cod sursa (job #807128) | Cod sursa (job #2769672) | Cod sursa (job #2138463)
#include <bits/stdc++.h>
using namespace std;
int n, m, x;
int dp[2][2 * 44105];
int maxim;
const int MOD = 10000;
void knapsack() {
int i = 1;
for (int i2 = 1; i2 <= n; i2++) {
for (int j2 = 1; j2 <= m; j2++) {
int y = i2 * j2;
for (int j = -maxim; j <= maxim; j++) {
int s = 1LL * dp[!(i & 1)][maxim + j];
s = (s + 1LL * dp[!(i & 1)][maxim + j - y]) % MOD;
s = (s + 1LL * dp[!(i & 1)][maxim + j + y]) % MOD;
dp[i & 1][maxim + j] = s;
}
i++;
}
}
}
int main() {
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d ", &n, &m, &x);
maxim = (n * (n + 1) / 2) * (m * (m + 1) / 2);
dp[0][maxim] = 1;
if (x > maxim || x < -maxim) {
printf("0\n");
return 0;
}
knapsack();
printf("%d\n", dp[((n * m) & 1)][maxim + x]);
return 0;
}