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

Обсуждение задачи 1112. Покрытие

Any wrongs here in my program?
Послано BYF 7 ноя 2002 07:57
Program P1112;
  Type
    Coor=Record
           X,Y:Integer;
         End;
  Var
    N,I,J,Last,Which:Integer;
    Num,Left:Array[1..100] Of Coor;

procedure Sort(l, r: longint);
var
  i, j, x: longint;
  Y:Coor;
begin
  i := l; j := r; x := Num[(l+r) DIV 2].Y;
  repeat
    while Num[i].Y < x do i := i + 1;
    while x < Num[j].Y do j := j - 1;
    if i <= j then
    begin
      y := Num[i]; Num[i] := Num[j]; Num[j] := y;
      i := i + 1; j := j - 1;
    end;
  until i > j;
  if l < j then Sort(l, j);
  if i < r then Sort(i, r);
end;

  Begin
    Readln(N);
    For I:=1 To N Do
      Begin
        Readln(Num[I].X,Num[I].Y);
        If Num[I].X>Num[I].Y Then
          Begin J:=Num[I].X; Num[I].X:=Num[I].Y; Num[I].Y:=J; End;
      End;
    Sort(1,N);
    I:=0;
    Last:=0;
    Which:=0;
    Repeat
      Inc(I);
      If Num[I].X>=Last Then
        Begin Inc(Which); Last:=Num[I].Y; Left[Which]:=Num[I]; End;
    Until I=N;
    Writeln(Which);
    For I:=1 To Which Do Writeln(Left[I].X,' ',Left[I].Y);
  End.
Anybody can help me?
Послано BYF 8 ноя 2002 08:25
> Program P1112;
>   Type
>     Coor=Record
>            X,Y:Integer;
>          End;
>   Var
>     N,I,J,Last,Which:Integer;
>     Num,Left:Array[1..100] Of Coor;
>
> procedure Sort(l, r: longint);
> var
>   i, j, x: longint;
>   Y:Coor;
> begin
>   i := l; j := r; x := Num[(l+r) DIV 2].Y;
>   repeat
>     while Num[i].Y < x do i := i + 1;
>     while x < Num[j].Y do j := j - 1;
>     if i <= j then
>     begin
>       y := Num[i]; Num[i] := Num[j]; Num[j] := y;
>       i := i + 1; j := j - 1;
>     end;
>   until i > j;
>   if l < j then Sort(l, j);
>   if i < r then Sort(i, r);
> end;
>
>   Begin
>     Readln(N);
>     For I:=1 To N Do
>       Begin
>         Readln(Num[I].X,Num[I].Y);
>         If Num[I].X>Num[I].Y Then
>           Begin J:=Num[I].X; Num[I].X:=Num[I].Y; Num[I].Y:=J; End;
>       End;
>     Sort(1,N);
>     I:=0;
>     Last:=0;
>     Which:=0;
>     Repeat
>       Inc(I);
>       If Num[I].X>=Last Then
>         Begin Inc(Which); Last:=Num[I].Y; Left[Which]:=Num[I]; End;
>     Until I=N;
>     Writeln(Which);
>     For I:=1 To Which Do Writeln(Left[I].X,' ',Left[I].Y);
>   End.