ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1423. Басня о строке

Помогите!!!Лимит времени(=
Послано Dj_Denis 11 ноя 2009 17:42
Что здесь поменять чтоб количество циклов было меньше...

var n,x,i,j,t:integer;
a,b:array[1..250000]of char;
tempchar,ch:char;
label fin,step;
begin
readln(n);
x:=-1;
for i:=1 to n do read(a[i]);
readln;
for i:=1 to n do read(b[i]);
readln;
i:=1;
while i<=n  do begin
j:=1;
                 while  j<=n do begin
                                if j=1 then begin
                                tempchar:=a[1];
                                a[1]:=a[n];
                                            end else begin
                                            ch:=a[j];
                                            a[j]:=tempchar;
                                            tempchar:=ch;
                                            end;
                                            j:=j+1;
                                end;
                 for t:=1 to n do if a[t]=b[t] then x:=i else begin
                                                              x:=-1;goto step;
                                                              end;
                 if i=n then x:=0;
                 goto fin;
                 step:i:=i+1;
                 end;
fin:write(x);
end.
Re: Помогите!!!Лимит времени(=
Послано AterLux 7 сен 2010 20:43
Your realisation is 'naive', takes in worst case O(N^2) operations. for 250000 it's about 62,5 billions iterations. It will take almost 1 minute on even strong CPU's

Use, for example, hash function.

Try test with 249999 equal symbols and one another
Re: Помогите!!!Лимит времени(=
Послано Andrew Hoffmann aka SKYDOS [Vladimir SU] 7 сен 2010 22:34
Избежать лемит времени можно написав КМП ;)