Pagini recente » Cod sursa (job #2876735) | Cod sursa (job #2970059) | Cod sursa (job #534522) | Cod sursa (job #2913220) | Cod sursa (job #2513539)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int N, M, X;
fin >> N >> M >> X;
if(X > 44100 || X < - 44100)
{
fout << 0;
return 0;
}
int max_sum = 0;
for(int i = 1; i <= N; ++i)
{
for(int j = 1; j <= M; ++j)
{
max_sum += i*j;
}
}
vector<vector<int>> dp(2, vector<int>(2*max_sum + 7, 0));
bool current = 0;
bool previous = 1;
dp[0][max_sum] = 1;
for(int i = 1; i <= N; ++i)
{
for(int j = 1; j <= M; ++j)
{
current = !current;
previous = !previous;
for(int s = 0; s <= 2 * max_sum; ++s)
{
dp[current][s] = dp[previous][s];
if(s + i*j <= 2*max_sum)
dp[current][s] += dp[previous][s + i*j];
if(s - i*j >= 0)
dp[current][s] += dp[previous][s - i*j];
dp[current][s] %= 10000;
}
}
}
fout << dp[current][max_sum + X];
}