Cod sursa(job #33589)

Utilizator vlad_popaVlad Popa vlad_popa Data 19 martie 2007 15:34:36
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
using namespace std;

#include <cstdio>
#include <cassert>
#include <string>

#define FIN "1-sir.in"
#define FOUT "1-sir.out"
#define NMAX 257
#define SMAX 257*128

int s1[SMAX], s2[SMAX], N, S;
const int prim = 194767;

int
 main ()
{
  int jj;
  
  freopen (FIN, "rt", stdin);
  freopen (FOUT, "wt", stdout);

  scanf ("%d%d", &N, &S);
  s1[0] = 1;
  for (int i = 2; i <= N; ++ i)
   {
     for (int j = 0; j <= N*(N-1)/2; ++ j)
      {
        jj = (j - (i-1)) > 0 ? (j - (i-1)) : (-j + (i-1));
        s2[j] = s1[jj] + s1[j + (i-1)];
        if (s2[j] > prim)
          s2[j] -= prim;
      }
     for (int j = 0; j <= N*(N-1)/2; ++ j)
      {
        assert (s2[j] <= prim);
        s1[j] = s2[j];
      }
   }
  S < 0 ? S = -S : S = S;
  printf ("%d\n", s1[S]);
  return 0;
}