Cod sursa(job #179773)

Utilizator madmanjonesJones the one madmanjones Data 16 aprilie 2008 12:33:39
Problema Potrivirea sirurilor Scor 14
Compilator fpc Status done
Runda Arhiva educationala Marime 2.09 kb
var s1,s2:array[1..20000] of char;
    v:array[1..200] of longint;
    c,d,nr,e:longint;
    f:text;
procedure citire;
          var i:longint;
          begin
               assign(f,'strmatch.in');
               reset(f);
               i:=1;
               while not eoln(f) do begin
                     read(f,s1[i]);
                     inc(i)
                     end;
               c:=i;
               readln(f);
               i:=1;
               while not eoln(f) do begin
                     read(f,s2[i]);
                     inc(i)
                     end;
               close(f);
               d:=i
          end;
procedure cautare;
          var i,j:longint;
              ok:boolean;
          begin
               i:=1;
               nr:=0;
               e:=1;
               while i<=d-c do begin
                     ok:=true;
                     j:=0;
                     if s1[i]=s2[i] then begin
                                    for j:=1 to c-1 do
                                        if s1[i+j]=s2[i+j] then ok:=true
                                                       else begin
                                                            ok:=false;
                                                            break
                                                            end
                                         end;
                     if ok=true then begin
                                     inc(nr);
                                     v[e]:=i+j;
                                     inc(e);
                                     end;
                     i:=i+j+1
                end
           end;
procedure afisare;
          var i:integer;
          begin
               assign(f,'strmatch.out');
               rewrite(f);
               writeln(f,nr);
               i:=1;
               while (i<=1000) and (i<=nr) do begin
                     write(f,v[i],' ');
                     inc(i)
                     end;
               close(f)
          end;
begin
     citire;
     cautare;
     afisare
end.