Pagini recente » Borderou de evaluare (job #2753670) | Cod sursa (job #2400001) | Cod sursa (job #604896) | Cod sursa (job #2560434) | Cod sursa (job #2819312)
PROGRAM StrMatch;
{$Mode ObjFpc}{$H+}
TYPE
Ty = Byte;
VAR
Fin, Fout: TextFile;
Sa, Sb: AnsiString;
Cnt: PtrUInt;
I, J, K: PtrUInt;
ArPos: Array Of PtrUInt;
ArPosHi: PtrUInt;
PROCEDURE Task;
begin
Cnt := 0;
J := 0;
repeat
I := Pos(Sa, Sb);
if I <> 0 then begin
Cnt += 1;
ArPosHi += 1;
ArPos[ArPosHi] := I + J - 1;
Delete(Sb, 1, I + J);
J += I;
end;
until I = 0;
Writeln(Fout, Cnt);
if ArPosHi > 0 then begin
Write(Fout, ArPos[1]);
for I := 2 to ArPosHi do begin
Write(Fout, ' ', ArPos[i]);
end;
end else
Exit;
end;
BEGIN
AssignFile(Fin, 'strmatch.in');
AssignFile(Fout, 'strmatch.out');
Reset(Fin);
Rewrite(Fout);
Readln(Fin, Sa);
Readln(Fin, Sb);
//Writeln(Sa);
//Writeln(Sb);
SetLength(ArPos, Length(Sb) + 1); // SlowAlloc?
ArPosHi := 0;
Task;
CloseFile(Fin);
CloseFile(Fout);
END.