Pagini recente » Cod sursa (job #408410) | Cod sursa (job #2516653)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 10000;
int N, M, K;
int main()
{
ifstream fin("diamant.in");
ofstream fout("diamant.out");
fin >> N >> M >> K;
int ADD = (M * (M + 1) / 2) * (N * (N + 1) / 2);
if (K < -ADD || ADD < K)
{
fout << 0 << "\n";
return 0;
}
vector <int> prevdp(2 * ADD + 5, 0);
vector <int> dp(2 * ADD + 5, 0);
prevdp[ADD] = 1;
for (int i = 1;i <= N;++i)
for (int j = 1;j <= M;++j)
{
int cost = i * j;
for (int p = 0;p <= 2 * ADD;++p)
{
dp[p] = 0;
if (p - cost >= 0)
dp[p] += prevdp[p - cost];
if (p + cost <= 2 * ADD)
dp[p] += prevdp[p + cost];
dp[p] += prevdp[p];
dp[p] %= MOD;
}
swap(dp, prevdp);
}
fout << prevdp[K + ADD] << "\n";
fin.close();
fout.close();
return 0;
}