Cod sursa(job #24860)

Utilizator m_dersidanDersidan Mihai m_dersidan Data 3 martie 2007 20:12:36
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
# include <stdio.h>
# include <string.h>

# define  _fin 	"1-sir.in"
# define  _fout	"1-sir.out"

# define  maxn	260
# define  maxs	32768

# define  mod	194767


int d[2][maxs], n, s, sol;


inline int abs(int x) { return x>=0?x:-x; }

void readf()
{
	freopen(_fin, "r", stdin);
	scanf("%d %d", &n, &s), s=abs(s);
}

void solve()
{
	int i, j, act=0, to;
	
	d[0][0] = 1;
	
	for (i=2; i<=n; i++)
	{
		memset(d[!act], 0, sizeof(d[!act]));
		for (j=0, to=i*(i-1)/2; j<=to; j++)
		{
			d[!act][j] = d[act][abs(j-(i-1))] + d[act][abs(j+(i-1))];
			if ( d[!act][j] >= mod ) d[!act][j] -= mod;
		}
		act = !act;
	}
	
	sol = d[act][abs(s)];
}

void writef()
{
	freopen(_fout, "w", stdout);
	printf("%d\n", sol);
}

int main()
{
	readf();
	solve();
	writef();
	
	return 0;
}