Cod sursa(job #13319)

Utilizator megabyteBarsan Paul megabyte Data 6 februarie 2007 10:53:31
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#define INF "1-sir.in"
#define OUF "1-sir.out"
#define NMAX 32768


int a[NMAX]={0},b[NMAX]={0},n,s,s1,s2,sol;

int main()
{
	register int i,j,k,mdj;
	int *p,*q,*aux;
	FILE *in,*out;
	in=fopen(INF,"r");
	out=fopen(OUF,"w");
	fscanf(in,"%d %d",&n,&s);
//        s=n*(n+1)/2;
        s2=n*(n-1)/2;s2=(s2<<1);s2=(s2>>1);
	s1=s2*(-1);
	a[0]=1;
	q=a;p=b;
//	printf("%d %d %d\n",s1,s2,q[0]);
	for(i=2;i<=n;i++)
	{
		k=i-1;s2=i*(i-1)/2;
		for(j=0;j<=s2;j++)
		{
			mdj=j-k;
			if(mdj<0) mdj*=(-1);
			p[j]=(q[mdj]+q[j+k])%194767;
		}
		aux=q;q=p;p=aux;
		/*for(j=0;j<=s2;j++) printf("%d ",j);
		printf("\n");
                for(j=0;j<=s2;j++)
		if(j<0) printf("%d ",q[j]);      
		else 	printf("%d ",q[j]);
		printf("\n\n");*/


	}
	//s2=n*(n+1)/2;s1=s2*(-1);
	//for(j=s1;j<=s2;j++) printf("%d ",sum[j+D]);
	if(s<0) s*=(-1);
	fprintf(out,"%d",q[s]);
	fclose(in);fclose(out);
	return 0;
}