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

Обсуждение задачи 1253. Некрологи

What's wrong??? Give me ANY test, please!
Послано Dream Team ETU 16 мар 2003 13:12
const Max = 1000000;
var
  i, j, n, m, cnt, cs, cp, cur : longint;
  { Patterns }
  s : array [1..10] of String;
  { Stack }
  head : longint;
  ss : array [1..200000] of byte;
  sp : array [1..200000] of Integer;
  { Cur line }
  str : string;
{}
begin
  { Чтение }
  Readln(n);
  for i:=1 to n do begin
    s[i] := '';
    repeat
      readln(str);
      if s[i]<>'' then
        s[i] := s[i] + #13#10 + str
      else
        s[i] := s[i] + str;
    until str[length(str)]='#';
  end;
  { &#1055;&#1077;&#1088;&#1074;&#1099;&#1081; &#1087;&#1088;&#1086;&#1075;&#1086;&#1085; }
  cnt := 0;
  head := 0;
  cs := 1; { CurString := 1 }
  cp := 1; { CurPos := 1 }
  while true do begin
    {}
    if s[cs,cp]='#' then
      if head = 0 then begin { &#1045;&#1089;&#1083;&#1080; &#1074; &#1089;&#1090;&#1077;&#1082;&#1077; &#1085;&#1080;&#1095;&#1077;&#1075;&#1086; &#1085;&#1077;&#1090; -> &#1042;&#1099;&#1093;&#1086;&#1076; }
        break;
      end else begin { &#1048;&#1085;&#1072;&#1095;&#1077; &#1074;&#1086;&#1079;&#1074;&#1088;&#1072;&#1090; &#1087;&#1086; &#1089;&#1090;&#1077;&#1082;&#1091; &#1074; &#1074;&#1099;&#1079;&#1074;&#1072;&#1074;&#1096;&#1091;&#1102; &#1089;&#1090;&#1088;&#1086;&#1082;&#1091; }
        cs := ss[head];
        cp := sp[head];
        dec(head);
        continue;
      end;
    { &#1055;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076; &#1087;&#1086; &#1089;&#1089;&#1099;&#1083;&#1082;&#1077; }
    if ((s[cs,cp]='*') and (s[cs,cp+1]>='1') and
        (s[cs,cp+1]<='9')) then begin
      { &#1055;&#1086;&#1084;&#1077;&#1097;&#1072;&#1077;&#1084; &#1074; &#1089;&#1090;&#1077;&#1082; &#1072;&#1076;&#1088;&#1077;&#1089; &#1074;&#1086;&#1079;&#1074;&#1088;&#1072;&#1090;&#1072; }
      inc(head);
      ss[head] := cs;
      sp[head] := cp+2;
      { &#1048;&#1079;&#1084;&#1077;&#1085;&#1103;&#1077;&#1084; &#1087;&#1086;&#1079;&#1080;&#1094;&#1080;&#1102; &#1082;&#1091;&#1088;&#1089;&#1086;&#1088;&#1072; }
      cs := ord( s[cs,cp+1] ) - ord('0');
      cp := 1;
    end else begin { &#1054;&#1089;&#1090;&#1072;&#1077;&#1084;&#1089;&#1103; &#1074; &#1101;&#1090;&#1086;&#1081; &#1078;&#1077; &#1089;&#1090;&#1088;&#1086;&#1082;&#1077; }
      inc(cnt); { &#1050;&#1072;&#1082;-&#1073;&#1099; &#1074;&#1099;&#1074;&#1077;&#1083;&#1080; &#1086;&#1095;&#1077;&#1088;&#1077;&#1076;&#1085;&#1086;&#1081; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083; }
      if cnt > Max then break;
      inc(cp); { &#1048;&#1076;&#1077;&#1084; &#1082; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1084;&#1091; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1091; &#1101;&#1090;&#1086;&#1081; &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; }
    end;
  end;
  { &#1045;&#1089;&#1083;&#1080; &#1087;&#1086;&#1083;&#1091;&#1095;&#1080;&#1083;&#1086;&#1089;&#1100; &#1073;&#1086;&#1083;&#1100;&#1096;&#1077; 1000000 &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&am