Pagini recente » Cod sursa (job #1537947) | Cod sursa (job #2231887) | Cod sursa (job #282460) | Cod sursa (job #1627226) | Cod sursa (job #2895694)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
#define MOD 10000
int n, m, s, sum_max, dp[200005];
int aux[200005];
int main()
{
fin >> n >> m >> s;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
sum_max += i * j;
if (s > sum_max || s < -sum_max) {
fout << -0;
return 0;
}
dp[2 * sum_max] = 1;
int max_val = 2 * sum_max, min_val = 2 * sum_max, copie_min_val = 2 * sum_max;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
for (int k = max_val; k >= copie_min_val; k--) {
if (dp[k]) {
aux[k - 2 * i *j] += dp[k];
aux[k - 2 * i * j] %= MOD;
min_val = min(min_val, k - 2 * i * j);
aux[k - i * j] += dp[k];
aux[k - i * j] %= MOD;
min_val = min(min_val, k - i * j);
}
}
for (int k = max_val; k >= min_val; k--) {
dp[k] += aux[k];
dp[k] %= MOD;
aux[k] = 0;
}
copie_min_val = min_val;
}
fout << dp[sum_max + s];
return 0;
}