Cod sursa(job #24183)

Utilizator vladcyb1Vlad Berteanu vladcyb1 Data 1 martie 2007 21:12:26
Problema 1-sir Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.27 kb

  const
       FIN = '1-sir.in';
       FOUT = '1-sir.out';
       NMAX = 256;
       SMAX = ( ( NMAX - 1 ) * NMAX ) SHR 1;
       PRIM = 194767;

  type
      int = array[ 0..SMAX ] of longint;

  var
      A : array[ 0..1 ] of int;
      N, S : longint;
      f, g : text;
      ans : longint;
      noresult : boolean;

  procedure read_data;
   begin
    assign( f, FIN ); reset( f );
    readln( f, N, S );
    close( f );
   end;


   procedure solve;
    var o, oo, i, j, smaxim : longint;
    begin
     o := 0; oo := 1;
     A[ 0, 0 ] := 1;
     smaxim := ( ( n - 1 ) * n ) shr 1;
     noresult := false;
     if abs( S ) > smaxim then begin noresult := true; exit; end;
     S := abs( S );
     for i := 2 to N do
      begin
       for j := 0 to Smaxim do
         begin
           A[oo][j] := A[o][ abs( j - ( i - 1 ) ) ] + A[o][ abs( j + ( i - 1 ) ) ];
           if A[ oo ][j] >= PRIM then dec( A[oo][j], PRIM );
         end;
        o := 1 - o;
        oo := 1 - oo;
       end;
      ans := A[o][S];
    end;

   procedure save;
    begin
     assign( g, FOUT ); rewrite( g );
     if noresult then writeln( g, 0 )
                 else writeln( g, ans );
    close( g );
   end;

  begin
  read_data;
  solve;
  save;
 end.