Cod sursa(job #45852)

Utilizator sealTudose Vlad seal Data 1 aprilie 2007 23:39:13
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#define Nm 256
#define Sm Nm*(Nm-1)/2+1
#define Mod 194767
#define abs(a) ((a)<0?-(a):(a))
int A[Sm],B[Sm],n,s;

void read()
{
    freopen("1-sir.in","r",stdin);
    scanf("%d%d",&n,&s);
}

void solve()
{
    int i,j;

    A[0]=1;
    for(i=2;i<=n;i++)
    {
	for(j=0;j<=i*(i-1)/2;j++)
	{
	    B[j]=0;
	    if(j+i-1<=(i-1)*(i-2)/2)
		B[j]+=A[j+i-1];
	    if(abs(j-i+1)<=(i-1)*(i-2)/2)
		B[j]+=A[abs(j-i+1)];
	    B[j]%=Mod;
	}

	for(j=0;j<=i*(i-1)/2;j++)
	    A[j]=B[j];
    }
}

void write()
{
    freopen("1-sir.out","w",stdout);
    if(abs(s)>n*(n-1)/2)
	printf("0\n");
    else
	printf("%d\n",A[abs(s)]);
}

int main()
{
    read();
    solve();
    write();
    return 0;
}