Cod sursa(job #1180585)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 30 aprilie 2014 19:47:32
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.68 kb
#include<fstream>
#include<cmath>
#define MOD 10000
using namespace std;
int n,m,K,maxim,best[2][165000];

inline int Abs(int x)
{
	if(x<0)
		return (-x);
	return x;
}

int main()
{
	int i,j,k;
	ifstream fin("diamant.in");
	fin>>n>>m>>K;
	fin.close();
	
	maxim=(n*(n+1)/2)*(m*(m+1)/2)*2;
	best[0][0]=1;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			for(k=0;k<=maxim;k++)
			{
				best[1][k]=best[0][k]+best[0][k+i*j]+best[0][Abs(k-i*j)];
				best[1][k]%=MOD;
			}
			for(k=0;k<=maxim;k++)
				best[0][k]=best[1][k];
		}
	}
	
	ofstream fout("diamant.out");
	if(maxim<Abs(K))
		fout<<"0\n";
	else
		fout<<best[0][Abs(K)]<<"\n";
	fout.close();
	return 0;
}