Олимпиадные задачи по программированию. Ч. 3. Лучшие решения. Ускова О.Ф - 32 стр.

UptoLike

Составители: 

32
readln(S);
while S[length(S)]=' ' do dec(s[0]);
N:=length(S);
move(S[1],A[1],N);
move(S[1],A[N+1],N);
move(S[1],A[2*N+1],N);
end;
function Number(j,move:integer; c:char):integer;
begin
if (j>i-N) and (j<i+N) and ((c='w') or (A[j]='w') or (A[j]=c))
then
if c='w' then
Number:=1+Number(j+move,move,A[j])
else Number:=1+Number(j+move,move,c)
else Number:=0;
end;
procedure Solve;
var k,Num,Max:integer;
begin
Max:=0;
for i:=N+1 to 2*n do
begin
Num:=Number(i,-1,'w')+Number(i+1,+1,'w');
if Num>Max then
begin
Max:=Num;
k:=i-N;
end;
if Max>=N then break;