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

Обсуждение задачи 1176. Гиперканалы

Help!!!!!!!!11Why I got 'wrong answer'????????
Послано Lin 22 фев 2002 21:55
Const P         : Array[0..7] of Byte=
                  (1,2,4,8,16,32,64,128);

Type Arr        = Array[0..125] of Byte;


Var  N,M        : Integer;
     Map        : Array[1..1000] of ^Arr;
     Total      : Integer;

Procedure Init;
Var i,j         : Integer;
    R           : Integer;
Begin
  Readln(N,M);
  For i := 1 to N do
    Begin
      New(Map[i]);
      Fillchar(Map[i]^,Sizeof(Map[i]^),0);
      For j := 1 to N do
        Begin
          Read(R);
          R := 1-R;
          Map[i]^[j Div 8] := Map[i]^[j Div 8] Or (P[j Mod 8]*R);
        End;
    End;
End;

Procedure Print;
Var i           : Integer;
    Quit        : Boolean;
Begin
  Repeat
    Quit := True;
    For i := 1 to N do
      If i<>M then
        If Map[M]^[i Div 8] and P[i Mod 8]<>0 then
          Begin
            Dec(Map[M]^[i Div 8],P[i Mod 8]);
            Writeln(M,' ',i);
            M := i;
            Quit := False;
            Break;
          End;
  Until Quit;
End;

Begin
  Init;
  Print;
End.
Re: Help!!!!!!!!11Why I got 'wrong answer'????????
Послано Igor 23 фев 2002 18:31
Try Such an input:
4 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

If i'm not mistaken, ur program gives wrong answer on this.

> Const P         : Array[0..7] of Byte=
>                   (1,2,4,8,16,32,64,128);
>
> Type Arr        = Array[0..125] of Byte;
>
>
> Var  N,M        : Integer;
>      Map        : Array[1..1000] of ^Arr;
>      Total      : Integer;
>
> Procedure Init;
> Var i,j         : Integer;
>     R           : Integer;
> Begin
>   Readln(N,M);
>   For i := 1 to N do
>     Begin
>       New(Map[i]);
>       Fillchar(Map[i]^,Sizeof(Map[i]^),0);
>       For j := 1 to N do
>         Begin
>           Read(R);
>           R := 1-R;
>           Map[i]^[j Div 8] := Map[i]^[j Div 8] Or (P[j Mod 8]*R);
>         End;
>     End;
> End;
>
> Procedure Print;
> Var i           : Integer;
>     Quit        : Boolean;
> Begin
>   Repeat
>     Quit := True;
>     For i := 1 to N do
>       If i<>M then
>         If Map[M]^[i Div 8] and P[i Mod 8]<>0 then
>           Begin
>             Dec(Map[M]^[i Div 8],P[i Mod 8]);
>             Writeln(M,' ',i);
>             M := i;
>             Quit := False;
>             Break;
>           End;
>   Until Quit;
> End;
>
> Begin
>   Init;
>   Print;
> End.