Cod sursa(job #423051)

Utilizator iamdoruTanase Theodor iamdoru Data 23 martie 2010 14:27:37
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
FILE *f,*g;
int n,m,v[460],p[460],x,contor=0,val=0;
int alege(int k) 
	{
	v[k]++;
	return v[k]<=1;
	}
void back() 
	{
	int k=1,a;
	v[1]=-2;
	val=-2;
	while(k)
		{
		val=val-v[k]*p[k];	
		a=alege(k);
		val+=v[k]*p[k];
		if(!a)
			{
			val-=v[k]*p[k];
			k--;
			}
		else 
			if(k==n*m)
				{
				if(val==x) 
					{
					contor++;
					contor=contor%10000;
					} 				
				}
			else 
				{
				k++;
				v[k]=-2;
				val+=-2*p[k];
				} 
		}
	}

int main() {
int q,i,j;
f=fopen("diamant.in","r");
fscanf(f,"%d%d%d",&n,&m,&x);
fclose(f);
q=0;
for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
		{
		q++;
		p[q]=i*j;
		}
back();
g=fopen("diamant.out","w");
fprintf(g,"%d\n",contor);
fclose(g);
return 0;}