Cod sursa(job #42665)

Utilizator razvi9Jurca Razvan razvi9 Data 29 martie 2007 13:38:55
Problema 1-sir Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
int n;
long s,nr;
void sir(int n,long a,long sm)
{if(n==0)
 {if(sm==s) nr=(nr+1)%194767;
  return;}
 long sum=n*(n+1)/2+n*a;
 if(sum+sm<s||(s>0&&sum+sm<0)) return;
 sum=-n*(n+1)/2+n*a;
 if(sum+sm>s||(s<0&&sum+sm>0)) return;
 sm=sm+a;
 sir(n-1,a+1,sm+1);
 sir(n-1,a-1,sm-1);}
int main()
{freopen("1-sir.in" ,"r", stdin);
 scanf("%d %ld",&n,&s);
 if((s>0?s:-s)>n*(n-1)/2||(s>0?s:-s)==n*(n-1)/2-1) nr=0;
 else if((s>0?s:-s)==n*(n-1)/2||(s>0?s:-s)==n*(n-1)/2-2) nr=1;
 else sir(n-1,0,0);
 freopen("1-sir.out" ,"w", stdout);
 printf("%ld",nr);
 fclose(stdout);
 return 0;}