Pagini recente » Cod sursa (job #2765762) | Cod sursa (job #520907) | Cod sursa (job #403583) | Cod sursa (job #49183) | Cod sursa (job #2691744)
#include <fstream>
using namespace std;
const int MOD = 1e4;
const int BASE = 210 * 210;
const int N = 2 * BASE + 1;
int dp[N], aux[N];
int main() {
ifstream in("diamant.in");
ofstream out("diamant.out");
int nl, nc, x, minq, maxq, mini, maxi;
in >> nl >> nc >> x;
minq = maxq = mini = maxi = BASE;
dp[BASE] = 1;
for (int i = 1; i <= nl; ++i)
for (int j = 1; j <= nc; ++j) {
for (int k = maxq; k >= minq; --k)
if (dp[k]) {
aux[k + i * j] += dp[k];
maxi = max(maxi, k + i * j);
}
for (int k = minq; k <= maxq; ++k)
if (dp[k]) {
aux[k - i * j] += dp[k];
mini = min(mini, k - i * j);
}
for (int k = mini; k <= maxi; ++k) {
dp[k] += aux[k];
aux[k] = 0;
if (dp[k] >= MOD)
dp[k] -= MOD;
}
minq = mini, maxq = maxi;
}
if (x >= -BASE && x <= BASE)
out << dp[BASE + x];
else
out << 0;
in.close();
out.close();
return 0;
}