Cod sursa(job #46875)

Utilizator g3ppyStoian Vlad g3ppy Data 3 aprilie 2007 09:54:36
Problema Xor Max Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#define NM 20
FILE *fin,*fout;
long saux,n,S,ok;
long long pas[NM][NM],sum[NM],rez[NM/2];

void genpas(long k)
{long i,j;
pas[1][1]=pas[2][1]=pas[2][2]=1;
for (i=3;i<=k;i++)
    for (j=1;j<=i;j++)
	pas[i][j]=pas[i-1][j]+pas[i-1][j-1];


}

void gensum (int k)
{long i,j,l;
for (i=1;i<=(((k-1)>>1)+1);i++)
    {
    for (j=1;j<=i;j++)
	for (l=j;l<=(k+j-i);l++)
	   {
	   sum[i]+=pas[l][j];
	   //sum[k-i+1]=sum[i];
	   }
    }

}









void back(int k)
  { if (k==((n-1)>>1)+2&&ok==0)
       { if (S==0)
	   {
	   scrie();
	   ok=1;

	   }
	 return ;
       }
    int i;
    for (i=0;(S-sum[k]*i>=0)&&(ok==0);i++)
	{   rez[k]=i;
	    S-=sum[k]*i;
	    back(k+1);
	    S+=sum[k]*i;
	}
  }



int main()
{
long i,j;
fin=fopen("triunghi.in","rt");
fout=fopen("triunghi.out","wt");
fscanf (fin,"%ld %ld\n",&n,&S);
genpas(n);
gensum(n);
back(1);


return 0;
}