Cod sursa(job #604038)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 19 iulie 2011 22:31:31
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>

int n,s,v[66666];

inline int min(int a,int b)
{
    if (a>b)
        return b;
    else
        return a;
}

inline int max(int a,int b)
{
    if (a>b)
        return a;
    else
        return b;
}

int main()
{
    int i,j,aux;
	freopen("1-sir.in","r",stdin);
	freopen("1-sir.out","w",stdout);
	scanf("%d %d",&n,&s);
	s=(n*(n-1)/2-s);
	if (s%2==1)
	{
		printf("0\n");
		return 0;
	}
	s/=2;
	if (s<0||s>=66666)
	{
		printf("0\n");
		return 0;
	}
	v[0]=1;
	aux=0;
	for (i=1;i<n;++i)
        for (j=min(aux,s-i);j>-1;--j)
            if (v[j])
            {
                aux=max(aux,j+i);
                v[j+i]+=v[j];
                if (v[j+i]>=194767)
                    v[j+i]-=194767;
            }
	printf("%d\n",v[s]);
	return 0;
}