Cod sursa(job #2456840)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 15 septembrie 2019 16:29:45
Problema Diamant Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>

const int CONST=45000;
const int MOD=10000;
int dp[2][2*CONST+5];

int main() {
	freopen("diamant.in", "r", stdin);
	freopen("diamant.out", "w", stdout);
	int n,m,x,pos=1;
	scanf("%ld%ld%ld", &n, &m, &x);
	dp[0][CONST]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			for(int k=0;k<=2*CONST;k++){
				if(!dp[1-pos][k])
                    continue;
				dp[pos][k-i*j]=(dp[1-pos][k]+dp[pos][k-i*j])%MOD;
				dp[pos][k]=(dp[1-pos][k]+dp[pos][k])%MOD;
				dp[pos][k+i*j]=(dp[1-pos][k]+dp[pos][k+i*j])%MOD;
				dp[1-pos][k]=0;
			}
			pos=1-pos;
		}
	if(x+CONST>2*CONST || x+CONST<0)
		printf("0\n");
	else
        printf("%ld\n", dp[1-pos][x+CONST]);
	return 0;
}