メモをとる
1299 ワード
メモを渡す
【タイトル説明】
NさんとAさんは授業中にメモを伝えるのが好きです.
メモを渡すのはリスクがあり、先生が発見したときに何を議論しているのか分からないために、一連の暗号化方法を発明しました.
1つは、1つの数字が2つの文字列aとbによって表現され、この数字がbがaで一致する位置である.例えば、a=「abcd」、b=「c」であれば、この数字は3である.
しかし、aとbは2つの異なる数字を表すことができる.例えば、a=「aba」、b=「aba」の場合、その数字は1でも3でもよい.
彼らはこの現象に好奇心を持っていて、今1つの文字列aを与えて、1つの整数xを求めて、任意の長さがxより大きい列bに対して、この問題は現れません.
【入力データ】
小文字のみからなる文字列a
【出力データ】
xの最小値を表す1行1整数
【サンプル入力】
ababa
【サンプル出力】
3
【データ範囲】
50%のデータに対して、aの長さ≦10、
100%のデータに対して、aの長い≦100である.
【タイトル説明】
NさんとAさんは授業中にメモを伝えるのが好きです.
メモを渡すのはリスクがあり、先生が発見したときに何を議論しているのか分からないために、一連の暗号化方法を発明しました.
1つは、1つの数字が2つの文字列aとbによって表現され、この数字がbがaで一致する位置である.例えば、a=「abcd」、b=「c」であれば、この数字は3である.
しかし、aとbは2つの異なる数字を表すことができる.例えば、a=「aba」、b=「aba」の場合、その数字は1でも3でもよい.
彼らはこの現象に好奇心を持っていて、今1つの文字列aを与えて、1つの整数xを求めて、任意の長さがxより大きい列bに対して、この問題は現れません.
【入力データ】
小文字のみからなる文字列a
【出力データ】
xの最小値を表す1行1整数
【サンプル入力】
ababa
【サンプル出力】
3
【データ範囲】
50%のデータに対して、aの長さ≦10、
100%のデータに対して、aの長い≦100である.
Program message;
var
n,i,j,k,l,ans:longint;
s:string;
function min(a,b:longint):longint;
begin
if (a<b) then exit(a) else exit(b);
end;
function max(a,b:longint):longint;
begin
if (a>b) then exit(a) else exit(b);
end;
begin
assign(input,'message.in');
assign(output,'message.out');
reset(input);
rewrite(output);
readln(s);
n:=length(s);
ans:=0;
for i:=1 to n do
for j:=i+1 to n do
begin
k:=i;
l:=j;
while ((s[k]=s[l]) and (l<=n)) do
begin
inc(k);
inc(l);
if (l>n) then break;
end;
ans:=max(ans,k-i);
end;
writeln(ans);
close(input);
close(output);
end.