Cod sursa(job #130363)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 31 ianuarie 2008 22:07:42
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
long int n,m,x,zero,i,j,k,v[500],vm[500],*vv,*vn,*va,s1[90000],s2[90000];
int main()
{
	FILE *f,*g;f=fopen("diamant.in","r");g=fopen("diamant.out","w");
	fscanf(f,"%ld%ld%ld",&n,&m,&x);
	zero=44102;vv=s1;vn=s2;
	for(i=1;i<=n;i++)
	 for(j=1;j<=m;j++)
	  {k++;v[k]=i*j;vm[k]=vm[k-1]+v[k];}
	if(x>vm[k]||x<-vm[k]){fprintf(g,"0\n");fcloseall();return 0;}
	vv[zero]=1;
	for(i=1;i<=k;i++)
	 { for(j=zero-vm[i-1];j<=zero+vm[i-1];j++)
	   { if(vv[j])
	     { vn[j-v[j]]+=vv[j];
	       vn[j]+=vv[j];
	       vn[j+v[j]]+=vv[j];
	       vv[j]=0;
	     }
	   }
	   va=vv;vv=vn;vn=va;
	 }
	fprintf(g,"%ld\n",vv[zero+x]);
	fcloseall();
	return 0;
}