Cod sursa(job #42072)

Utilizator gigi_becaliGigi Becali gigi_becali Data 28 martie 2007 20:30:58
Problema 1-sir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <string>
#define maxn 50
#define maxt maxn*maxn/2
int a[2*maxn*maxn+1][2*maxn+1], b[2*maxn*maxn+1][2*maxn+1];
int n, s;
int r=32640;
int p=256;
void citire()
{
	freopen("1-sir.in", "r", stdin);
	scanf("%d %d", &n, &s);
	r=n*n/2+1;
	p=n+1;
}

int sgn(int a)
{
if(a<0) return -a;
return a;
}

void calcul()
{
	int i, j, k;
	for(i=0;i<maxn*maxn;i++)
		for(j=0;j<2*maxn-1;j++) a[i][j]=b[i][j]=0;
	a[1][1]=1;
//	a[-1+maxt][-1+maxn]=1;

	//printf("%d\n", a[1+maxt][1+maxn]);
	for(i=3;i<=n;i++)
	{
		int y=i*i/2;
		int z=-y;
	{	for(j=0;j<=y;j++)
		
			
			for(k=0;k<=i;k++)
			{
				//printf("%d %d\n", j, k);
				b[sgn(j)][sgn(k)]=a[sgn(j-k)][sgn(k-1)]+a[sgn(j-k)][sgn(k+1)], b[sgn(j)][sgn(k)]%=194767;
				
			}				
}				
		//	memcpy(a, b, sizeof(b));
		for(k=0;k<=y;k++)
				for(int t=0;t<=i;t++) a[sgn(k)][sgn(t)]=b[sgn(k)][sgn(t)];
	
	
		
	}
		int sum=0;
	for(i=0;i<=n;i++)sum+=a[sgn(s)][sgn(i)], sum%=194767;
	freopen("1-sir.out", "w", stdout);
	printf("%d\n", sum);
}

int main()
{
	citire();
	calcul();
	return 0;
}