type data=array[1..300001]of longint;
var
s,t:ansistring;
next,print:data;
num,p:longint;
procedure getnext(t:ansistring;var next:data);
var j,k:longint;
begin
j:=1;k:=0;next[1]:=0;
while j<length(t) do
if (k=0)or(t[j]=t[k]) then
begin
inc(j);inc(k);
if t[j]<>t[k] then next[j]:=k
else next[j]:=next[k];
end
else k:=next[k];
end;
procedure kmp(s,t:ansistring);
var i,j:longint;
begin
i:=1;j:=1;
repeat
while (i<=length(s))and(j<=length(t)) do
if (j=0)or(s[i]=t[j]) then begin inc(i);inc(j);end
else j:=next[j];
if j>length(t) then begin inc(num);print[num]:=i-length(t);end
else exit;
i:=i-length(t)+1;j:=1;
until 1+1<>2;
end;
begin
readln(t);
readln(s);
getnext(t,next);
kmp(s,t);
if num=0 then begin write(’There must be something wrong.’);exit;end;
writeln(num);
for p:=1 to num-1 do writeln(print[p]);
write(print[num]);
readln;readln;
end.
查看状态 Show Status
状态题目:自然的谜语
题目编号:382-自然的谜语 查看该题
状态: Unaccepted
测评机: Xeost[5]
得分: 80分
提交日期: 2009-10-7 23:02:00
有效耗时: 1249毫秒
测试结果1: 通过本测试点|有效耗时156ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 通过本测试点|有效耗时47ms
测试结果4: 通过本测试点|有效耗时203ms
测试结果5: 通过本测试点|有效耗时203ms
测试结果6: 通过本测试点|有效耗时203ms
测试结果7: 通过本测试点|有效耗时203ms
测试结果8: 通过本测试点|有效耗时187ms
测试结果9: 选手程序运行超过时限
测试结果10: 输出过少|用户输出数据少于标准输出的50%[标准输出338906位|选手输出1400位]
大牛们帮忙看下呀!