Cod sursa(job #7318)

Utilizator vladcyb1Vlad Berteanu vladcyb1 Data 21 ianuarie 2007 13:25:59
Problema 1-sir Scor 0
Compilator fpc Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 1.24 kb

 const
     FIN = '1-sir.in';
     FOUT = '1-sir.out';
     NMAX = 75;
     PRIM = 194767;

  type
        matrix = array[ -NMAX..NMAX, -NMAX * NMAX..NMAX*NMAX ] of longint;


   var A : array[ 0..1 ] of matrix;
       f, g : text;
       N, K, I, J, S, o, oo, ans : longint;

 begin
  assign( f, FIN ); reset( f );
  readln( f, N, S );

  if ( S > ( ( n - 1 ) * n ) div 2) or ( s < - ((n-1)*n) div 2 ) then
    begin
      assign( g, FOUT ); rewrite( g ); writeln( g, 0 );
      close( g );
      halt;
      end;

  close( f );
  o := 0; oo := 1;
  A[o][0][0] := 1;
  for i := 2 to N do
    begin
      for j := - N to N do
       for k := - S to S do
        begin
         A[oo][j][k] := 0;
         if ( abs(K - j) <= abs(S) ) and ( abs(j - 1) <= N ) then A[oo][j][k] := A[o][j-1][k-j];
         if ( abs(K - j) <= abs(S) ) and ( abs(j + 1) <= N ) then inc( A[oo][j][k], A[o][j+1][k-j] );
         if A[oo][j][k] >= PRIM then dec( A[oo][j][k], PRIM );
        end;
       o := 1 - o;
       oo := 1 - oo;
   end;
 ans := 0;
 for j := - N to N do
   begin
    ans := ans + A[o][j][S];
    if ans >= PRIM then dec( ans, PRIM );
   end;
 assign( g, FOUT );
 rewrite( g);
 writeln( g, ans );
 close( g );
end.