Cod sursa(job #2760245)

Utilizator StefanSanStanescu Stefan StefanSan Data 24 iunie 2021 12:31:22
Problema Diamant Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include      <iostream>
#include      <fstream>
#include      <algorithm>

using namespace std;

ifstream in("diamant.in");
ofstream out("diamant.out");

int n, m, x, dp[90005][2], sum;

int main() {
	ios_base::sync_with_stdio(false);
	in.tie(NULL), out.tie(NULL);

	in >> n >> m >> x;

	x = abs(x);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			sum += i * j;
		}
	}

	if (x > sum) {
		out << 0;
		return 0;
	}
	dp[sum][1] = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			for (int d = 0; d <= 2 * sum; d++) {
				dp[d][0] = dp[d][1];
			}
			for (int d = 0; d <= 2 * sum; d++) {
				if (i * j + d <= 2 * sum) {
					dp[d][1] += dp[d + i * j][0];
				}
				if (d - i * j >= 0) {
					dp[d][1] += dp[d - i * j][0];
				}
				dp[d][1] %= 10000;
			}
		}
	}

	out << dp[x + sum][1];

	return 0;
}