Cod sursa(job #401735)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 23 februarie 2010 08:29:06
Problema 1-sir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#define MOD 194764
int n,s,smax,dif;
int max,sum[90001];
int cmax;
int main ()
{
    int i,j;
    freopen("1-sir.in","r",stdin);
    freopen("1-sir.out","w",stdout);
    scanf("%d%d",&n,&s);
    if(s<0)
        s*=-1;
    smax=n*(n-1)/2;
    if(s>smax)
    {
        printf("0\n");
        return 0;
    }
    if(s==smax)
    {
        printf("1\n");
        return 1;
    }
    dif=smax-s;
    if(dif%2)
    {
        printf("0\n");
        return 0;
    }
    dif/=2;
    sum[0]=1;
    max=0;
    for(i=1;i<=n-1;i++)
    {
        cmax=max;
        for(j=0;j<=max;j++)
        {
            if(j+i>dif)
                break;
            if(!sum[j])
                continue;
            sum[j+i]+=sum[j];
            if(i+j>cmax)
                cmax=i+j;
            if(sum[j+i]>MOD)
                sum[j+i]-=MOD;
        }
        max=cmax;
    }
    printf("%d\n",sum[dif]);
    return 0;
}