Pagini recente » Cod sursa (job #551521) | Borderou de evaluare (job #2302103) | Cod sursa (job #661023) | Borderou de evaluare (job #1082912) | Cod sursa (job #1800771)
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int mod = 10000;
const int maxx = 44205;
const int maxn = 25;
int v[maxn * maxn];
int dp[2][maxx * 2];
int main()
{
int n, m, x;
in >> n >> m >> x;
int poz = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
v[++poz] = i * j;
sort(v + 1, v + poz + 1);
dp[0][maxx] = 1;
int sum = 0;
for(int i = 1; i <= poz; i++)
{
sum += v[i];
int p = i % 2;
for(int s = maxx - sum; s <= maxx + sum; s++)
dp[p][s] = (dp[1 - p][s - v[i]] + dp[1 - p][s] + dp[1 - p][s + v[i]]) % mod;
}
if(x + maxx < 0 || maxx <= x)
{
out << 0 << "\n";
return 0;
}
out << dp[(n * m) % 2][maxx + x] << "\n";
return 0;
}