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

Обсуждение задачи 1089. Проверка со словарём

Why my program is wrong??? May be in input mistake??? Please? HELP ME!!! (Problem 1089)
Послано Reshetnikov Eugeny 17 янв 2002 10:38
Program n1089;
  Const
    voc=['a'..'z'];
  Var
    a:array [1..101] of string[10];
    b:array [1..30000] of char;
    c:array [1..30000] of boolean;
    i,j,q,w,m,n,k,count:integer;
    pp:boolean;

Procedure Input;
  Begin
    n:=0;
    While true Do
      Begin
        Inc(n);
        ReadLn(a[n]);
        If a[n]='#' Then
          Begin
            Dec(n);
            Break;
          End;
      End;
    m:=0;
    While true Do
      Begin
        Inc(m);
        Read(b[m]);
        If Ord(b[m])=26 Then
          Break;
      End;
  End;

Procedure Solve;
  Begin
    count:=0;
    Repeat
      pp:=false;
      For i:=1 to m Do
        If (b[i] in voc) and (c[i]=false) Then
          Begin
            pp:=true;
            Break;
          End;
      For j:=(i+1) to m Do
        If Not(b[j] in voc) Then
          Break;
      For q:=1 to n Do
        If Length(a[q])=(j-i) Then
          Begin
            k:=0;
            For w:=1 to Length(a[q]) Do
              If a[q][w]<>b[i+w-1] Then
                Inc(k);
            If k=1 Then
              Begin
                For w:=1 to Length(a[q]) Do
                  If a[q][w]<>b[i+w-1] Then
                    Begin
                      b[i+w-1]:=a[q][w];
                      Break;
                    End;
                Inc(count);
                Break;
              End;
          End;
      For w:=i to (j-1) Do
        c[w]:=true;
    Until Not pp;
  End;

Procedure Output;
  Begin
    For i:=1 to m Do
      Write(b[i]);
    WriteLn;
    Write(count);
  End;

Begin
  Input;
  Solve;
  Output;
End.