Cod sursa(job #2319943)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 13 ianuarie 2019 22:56:52
Problema Diamant Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <bits/stdc++.h>

using namespace std;

#define MOD 10000

int DP[2][160000],n,m,x,mx,ne=1;

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

int main(){
	fin>>n>>m>>x;
	DP[0][0]=DP[0][1]=mx=1;
	int aux;
	m<n?aux=n,n=m,m=aux:n=n;
	for(int i=1;i<=n;i++){
		for(int j=i;j<=m;j++){
			if(i==1 && j==1) continue;
			mx+=i*j;
			for(int k=0;k<=mx;k++){
				DP[ne%2][k]=((DP[(ne+1)%2][k+i*j*2]%MOD+DP[(ne+1)%2][abs(k-i*j*2)]%MOD)%MOD+(DP[(ne+1)%2][k+i*j]%MOD+DP[(ne+1)%2][abs(k-i*j)]%MOD)%MOD+DP[(ne+1)%2][k]%MOD)%MOD;	
			}
			ne++;
		}
	}
	fout<<DP[(ne+1)%2][x];
	return 0;
}