Pagini recente » Cod sursa (job #2168868) | Cod sursa (job #2200923) | Cod sursa (job #2746904) | Cod sursa (job #1908013) | Cod sursa (job #1089951)
#include <fstream>
#include <iostream>
#include <cstring>
#define mod 10000
using namespace std;
ifstream fin ("diamant.in");
ofstream fout ("diamant.out");
int dp[2][100010];
int v[410];
int n,m,x,t;
int main()
{
fin>>n>>m>>x;
for (int i=1; i<=n; ++i)
for (int j=1; j<=m; ++j)
{
v[++t] = i*j;
}
dp[0][50000] = 1;
dp[1][50000] = 1;
int minv = 0, maxv = 0;
int ok=0;
for (int i=1; i <= t; ++i, ok = 1-ok)
{
int *p1 = dp[ok] + 50000;
int *p2 = dp[1-ok] + 50000;
for (int j=minv; j<=maxv; ++j)
{
if (p1[j])
{
p2[j+v[i]] += p1[j];
if (p2[j+v[i]] >= mod)
p2[j+v[i]] -= mod;
p2[j-v[i]] += p1[j];
if (p2[j-v[i]] >= mod)
p2[j-v[i]] -= mod;
}
}
maxv += v[i];
minv -= v[i];
memcpy (dp[ok],dp[1-ok],sizeof(dp[ok]));
}
int *p = dp[ok] + 50000;
if (x >44100 || x < -44100)
fout<<0;
else fout<<p[x];
}