Cod sursa(job #1194566)

Utilizator vld7Campeanu Vlad vld7 Data 4 iunie 2014 04:13:19
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>

#define dp(i, j) dp[i + 1][j + 44100]

using namespace std;

const int MOD = 10000;

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

int N, M, X;
int dp[3][100000], ans;

int main() {
	f >> N >> M >> X;
	
	int NR = N * M;
	dp(1, 0) = 1;
	for (int i = 0, prev = 1; i < NR; i++, prev ^= 1) {
		int crt = i % 2;
		for (int j = -44100; j <= 44100; j++) {
			int l = i / M;
			int c = i % M;
			int cost = (l + 1) * (c + 1);
			
			dp(crt, j) = ( dp(prev,j) + dp(prev, j - cost) + dp(prev, j + cost) ) % MOD;
		}
	}
	
	if (X < -44100 || X > 44100)
		ans = 0;
	else
		ans = dp((NR - 1) % 2, X);
	
	g << ans;
	
	return 0;
}