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

Обсуждение задачи 1008. Кодирование изображений

Why I always get 'WRONG ANSWER'? Who can tell me how to do it right?
Послано qwt 16 окт 2001 19:06
program ural1008;
const
  walk:array[1..4] of integer=(10,1,-10,-1);
  ss:array[1..4] of char=('R','T','L','B');
var
  a:array[0..100] of integer;
  map:array[0..100] of boolean;
  n,x,y,i,j,k:integer;
  s:string;
  w:integer;
function strtoint(s:string):integer;
var
  i,j:integer;
begin
  val(s,i,j);
  strtoint:=i;
end;

procedure work1(n:integer);
var
  i,x,y,st,la,j,k:integer;
begin
  for i:=1 to n do begin
    readln(x,y);
    map[x*10-10+y-1]:=true;
  end;
    fillchar(a,sizeof(a),0);
    for i:=0 to 100 do
      if map[i]=true then break;
    if map[i]=false then begin writeln('.');exit;end;
    map[i]:=false;
    writeln(i div 10+1,' ',i mod 10+1);
    a[1]:=i;
    st:=0;
    la:=1;
    repeat
      st:=st+1;
      for i:=1 to 4 do
        if (map[a[st]+walk[i]])and(a[st]+walk[i] in
[0..99]) then begin
          map[a[st]+walk[i]]:=false;
          la:=la+1;
          a[la]:=a[st]+walk[i];
          write(ss[i]);
        end;
      if st<la then writeln(',') else writeln('.');
    until st=la;
end;

procedure work2(xx,yy:integer);
var
  i,t,st,la,j,k:integer;

begin
  t:=0;
{  repeat }
    fillchar(a,sizeof(a),0);
    map[xx*10-10+yy-1]:=true;
    a[1]:=xx*10-10+yy-1;
    st:=0;
    la:=1;
    t:=t+1;
    repeat
      st:=st+1;
      readln(s);
      if s='.' then break;
      t:=t+length(s)-1;
      for j:=1 to length(s)-1 do
        for i:=1 to 4 do
        if ss[i]=s[j] then begin
          map[a[st]+walk[i]]:=true;
          la:=la+1;
          a[la]:=a[st]+walk[i];
        end;
    until st=la;
{    readln(S);
    if s='.' then break else begin
      xx:=strtoint(copy(s,1,pos(' ',s)-1));
      delete(s,1,pos(' ',s));
      yy:=strtoint(s);
    end;}
{  until true=false;}
  writeln(t);
  for i:=1 to 10 do
    for j:=1 to 10 do
      if map[i*10-10+j-1] then writeln(i,' ',j);
end;

begin
  readln(s);
  k:=0;
  for i:=1 to length(s) do
    if s[i]=' ' then break;
  if i=length(s) then begin
    n:=strtoint(s);
    work1(n);
  end else
  begin
    if s='.' then begin writeln(0);exit;end else begin
      x:=strtoint(copy(s,1,pos(' ',s)-1));
      delete(s,1,pos(' ',s));
      y:=strtoint(s);
      work2(x,y);
    end;
  end;
end.