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

Обсуждение задачи 1111. Квадраты

Why my program got WA?Here's it.
Послано Huang Yizheng 13 ноя 2001 15:28
const maxn=100;
      jin=1e-15;
var d:array [1..maxn] of extended;
    id:array [1..maxn] of byte;
    square:array [1..maxn] of
     record xmin,ymin,xmax,ymax:integer;end;
    n,i,k:byte;
    px,py:integer;
procedure swap(var a,b:integer);
var t:integer;
begin
 t:=a;a:=b;b:=t;
end;
procedure swapb(var a,b:byte);
var t:byte;
begin
 t:=a;a:=b;b:=t;
end;
procedure swapd(var a,b:extended);
var t:extended;
begin
 t:=a;a:=b;b:=t;
end;
function dis(x,y:integer):extended;
begin
 dis:=sqrt(sqr(px-x)+sqr(py-y));
end;
function min(a,b:integer):integer;
begin
 if a<b then min:=a else min:=b;
end;
function max(a,b:integer):integer;
begin
 if a>b then max:=a else max:=b;
end;
begin
 readln(n);
 for i:=1 to n do
  begin
   readln(square[i].xmin,square[i].ymin,square
[i].xmax,square[i].ymax);
   px:=max(abs(square[i].xmin-square[i].xmax),abs(square
[i].ymin-square[i].ymax));
   square[i].xmin:=min(square[i].xmin,square[i].xmax);
   square[i].ymin:=min(square[i].ymin,square[i].ymax);
   square[i].xmax:=square[i].xmin+px;
   square[i].ymax:=square[i].ymin+px;
  end;
 readln(px,py);
 for i:=1 to n do
  if px<square[i].xmin then
   if py<square[i].ymin then d[i]:=dis(square[i].xmin,square
[i].ymin)
  else
   if py<=square[i].ymax then d[i]:=square[i].xmin-px
  else d[i]:=dis(square[i].xmin,square[i].ymax)
 else
  if px<=square[i].xmax then
   if py<square[i].ymin then d[i]:=square[i].ymin-py
  else
   if py<=square[i].ymax then d[i]:=0
  else d[i]:=py-square[i].ymax
 else
  if py<square[i].ymin then d[i]:=dis(square[i].xmax,square
[i].ymin)
   else
  if py<=square[i].ymax then d[i]:=px-square[i].xmax
   else d[i]:=dis(square[i].xmax,square[i].ymax);
 for i:=1 to n do id[i]:=i;
 for i:=1 to n-1 do
  for k:=i+1 to n do
   if d[i]>d[k]+jin then
    begin
     swapd(d[i],d[k]);
     swapb(id[i],id[k]);
    end;
 for i:=1 to n-1 do
  write(id[i],' ');
 writeln(id[n]);
end.
Re: Why my program got WA?Here's it.
Послано Nanyang Revenger 24 ноя 2001 14:41
It's a square. Not a rectangle.