Cod sursa(job #1490116)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 22 septembrie 2015 19:02:11
Problema Diamant Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#define MAX 805
#define X 44105
#define mod 10000

int n, m, x, u[2 * X], v[2 * X], i, j, k;

int main(){
	freopen("diamant.in", "r", stdin);
	freopen("diamant.out", "w", stdout);
	scanf("%d%d%d", &n, &m, &x);
	if(x < -X + 5 || x > X - 5){
		printf("0\n");
		return 0;
	}
	int val = n * m * (n + 1) * (m + 1) / 4;
	for(i = 1; i <= m; i++)
		for(j = 1; j <= n; j++){
			for(k = -val; k <= val; k++){
				if(k - i * j >= -val)
					v[X + k - i * j] = (v[X + k - i * j] + u[X + k]) % mod;
				if(k + i * j <= val)
					v[X + k + i * j] = (v[X + k + i * j] + u[X + k]) % mod;
			}
			for(k = -val; k <= val; k++)
				u[X + k] = v[X + k];
			u[X - i * j] = (u[X - i * j] + 1) % mod;
			v[X - i * j] = (v[X - i * j] + 1) % mod;
			u[X + i * j] = (u[X + i * j] + 1) % mod;
			v[X + i * j] = (v[X + i * j] + 1) % mod;
		}
	printf("%d\n", u[X + x]);
	return 0;
}