Cod sursa(job #2456844)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 15 septembrie 2019 16:31:26
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 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("%d%d%d", &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;
                if(k>=i*j)
                    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;
				if(k+i*j<=2*CONST)
                    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("%d\n", dp[1-pos][x+CONST]);
	return 0;
}