Pagini recente » Cod sursa (job #469645) | Cod sursa (job #2971397) | Cod sursa (job #455004) | Cod sursa (job #1597680) | Cod sursa (job #2691738)
#include <fstream>
using namespace std;
const int MOD = 1e4;
const int BASE = 210 * 210;
const int N = 2 * BASE + 1;
int dp[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]) {
dp[k + i * j] += dp[k];
if (dp[k + i * j] >= MOD)
dp[k + i * j] -= MOD;
maxi = max(maxi, k + i * j);
}
for (int k = minq; k <= maxq; ++k)
if (dp[k]) {
dp[k - i * j] += dp[k];
mini = min(mini, k - i * j);
if (dp[k - i * j] >= MOD)
dp[k - i * j] -= MOD;
}
minq = mini, maxq = maxi;
}
if (x >= -BASE && x <= BASE)
out << dp[BASE + x];
else
out << 0;
in.close();
out.close();
return 0;
}