Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Profil skyskater | Cod sursa (job #1551173)
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 45000
using namespace std;
int n, m, x, a[MAXN], b[MAXN];
inline int abs(int x) { return x < 0 ? -x : x; }
void solve()
{
int k = 0;
a[0] = 1;
b[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
int val = i*j;
for (int ind = k; ind >= -k; ind--)
{
int upper = abs(ind+val);
int lower = abs(ind);
b[upper] += a[lower];
}
b[0] += a[val];
k += val;
memcpy(a, b, sizeof(a));
}
}
int main()
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d", &n, &m, &x);
solve();
printf("%d", a[x]);
return 0;
}