Pagini recente » Cod sursa (job #1403733) | Cod sursa (job #2127092) | Cod sursa (job #2889113) | Cod sursa (job #816476) | Cod sursa (job #2138481)
#include <bits/stdc++.h>
using namespace std;
int n, m, x;
int dp[2][3 * 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 = dp[!i][maxim + j];
if (maxim + j - y >= 0)
s = (s + dp[!i][maxim + j - y]) % MOD;
if (maxim + j + y <= 2 * 44105)
s = (s + dp[!i][maxim + j + y]) % MOD;
dp[i][maxim + j] = s;
}
i = !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;
}