|
|
back to boardWhat's wrong??? Give me ANY test, please! 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; { Первый прогон } 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 { Если в стеке ничего нет -> Выход } break; end else begin { Иначе возврат по стеку в вызвавшую строку } cs := ss[head]; cp := sp[head]; dec(head); continue; end; { Переход по ссылке } if ((s[cs,cp]='*') and (s[cs,cp+1]>='1') and (s[cs,cp+1]<='9')) then begin { Помещаем в стек адрес возврата } inc(head); ss[head] := cs; sp[head] := cp+2; { Изменяем позицию курсора } cs := ord( s[cs,cp+1] ) - ord('0'); cp := 1; end else begin { Остаемся в этой же строке } inc(cnt); { Как-бы вывели очередной символ } if cnt > Max then break; inc(cp); { Идем к следующему символу этой строки } end; end; { Если получилось больше 1000000 символ&am |
|
|