Cod sursa(job #7801)

Utilizator georgianaGane Andreea georgiana Data 22 ianuarie 2007 18:05:05
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <string.h>

#define MOD 194767 
long int n,S,a[65301],a0[65301];
#define a (a + 32650)
#define a0 (a0 + 32650)

int main()
{
    FILE *f;
    f=fopen("1-sir.in","r");
    fscanf(f,"%d %d",&n,&S);
    fclose(f);
    
    memset(a0,0,sizeof(a0));
    a0[0]=1;
    long int max=n*(n-1)/2;
    for (int i=1;i<n;i++)
    {
        for (long int s=-max;s<=max;s++)
        {
            long int aux=i*(i+1)/2;
            if (s>aux or s<-aux) a[s]=0;
            else a[s]=(a0[s-i]+a0[s+i])%MOD;
        }
        for (long int s=-max;s<=max;s++)
             a0[s]=a[s];   
    }
              
    f=fopen("1-sir.out","w");
    if (S>max or S<-max) fprintf(f,"0\n");
    else fprintf(f,"%d\n",a0[S]);
    fclose(f);
    return 0;
}