Pagini recente » Cod sursa (job #2709329) | Cod sursa (job #2219765) | Cod sursa (job #1045429) | Cod sursa (job #1350066) | Cod sursa (job #2528805)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 405, MAXS = MAXN * 10;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int dp1[MAXS], dp2[MAXS], val[MAXN], n, m, k, s, test[MAXN];
#define dp1 (dp1 - 1 + MAXS / 2)
#define dp2 (dp2 - 1 + MAXS / 2)
void preprocess()
{
s = n * m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
val[(i - 1) * m + j] = i * j;
}
void solve()
{
int sum = 1;
dp1[-1] = dp1[0] = dp1[1] = 1;
for (int i = 2; i <= s; ++i) {
for (int j = -sum; j <= sum; ++j)
dp2[j] = dp1[j];
sum += val[i];
for (int j = -sum; j <= sum; ++j)
dp1[j] = dp2[j] + dp2[j - val[i]] + dp2[j + val[i]];
}
}
int main()
{
fin >> n >> m >> k;
preprocess();
solve();
fout << dp1[k];
return 0;
}