Pagini recente » Cod sursa (job #908128) | Cod sursa (job #3212546) | Cod sursa (job #2590320) | Cod sursa (job #1789444) | Cod sursa (job #2834332)
#include <bits/stdc++.h>
using namespace std;
const int mod = 10000, V = 90000;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int n, m, x, a[405], len, dp[2][95000];
int main()
{
fin >> n >> m >> x;
if(x > n*m*(n+1)*(m+1)/4)
fout << 0 << '\n';
else
{
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
a[++len] = i * j;
x += 45000; //offset
dp[0][V/2] = 1; //primul element
int L = 0;
for(int i = 1; i <= len; i ++)
{
L = 1 - L;
for(int j = 0; j <= V; j ++)
{
dp[L][j] = dp[1 - L][j]; //nu e L - 1, ca merg pe negative :-)
if(j >= a[i])
dp[L][j] += dp[1 - L][j - a[i]];
dp[L][j] += dp[1 - L][j + a[i]];
dp[L][j] %= mod;
}
}
fout << dp[L][x] << '\n';
}
return 0;
}