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

Обсуждение задачи 1168. Radio Stations

why I get WA?
Послано chineseboy 1 июл 2002 13:58
const inp='';
type fff=record
          x,y:integer;
          r:real;
         end;
var
 map:array[1..50,1..50]of integer;
 fsz:array[1..1000]of fff;
 z:array[1..1000,1..2]of integer;
 n,m,max,k:integer;
 t:text;

procedure zl;
 var i,j:longint;
  begin
   fillchar(map,sizeof(map),0);
   fillchar(z,sizeof(z),0);
   fillchar(fsz,sizeof(fsz),0);
   assign(t,inp);
   reset(t);
   readln(t,m,n,k);
   for i:=1 to m do
    for j:=1 to n do
     read(t,map[i,j]);
   for i:=1 to k do readln(t,fsz[i].x,fsz[i].y,fsz[i].r);
   close(t);
  end;

procedure gc;
 var i,j,l,min,big:longint;
     s:real;
     yes:boolean;
 begin
  for i:=1 to m do
   for j:=1 to n do
    begin
     fillchar(z,sizeof(z),0);
     yes:=true;
     for l:=1 to k do
      if (fsz[l].x<>i)or(fsz[l].y<>j) then
      begin
       s:=sqr(fsz[l].r)-sqr(i-fsz[l].x)-sqr(j-fsz[l].y);
       if s>=0 then
       begin
        z[l,1]:=round(-sqrt(s)+map[fsz[l].x,fsz[l].y]+0.49);
        z[l,2]:=trunc(sqrt(s)+map[fsz[l].x,fsz[l].y]);
        if z[l,1]<map[i,j] then z[l,1]:=map[i,j];
        if z[l,2]<map[i,j] then begin
                                 yes:=false;
                                 break;
                                end
       end else begin
                 yes:=false;
                 break;
                end;
      end
     else begin
           yes:=false;
           break;
          end;
     if yes then
     begin
      min:=z[1,1];big:=z[1,2];
      for l:=2 to k do
      begin
       if min<z[l,1] then min:=z[l,1];
       if big>z[l,2] then big:=z[l,2];
      end;
      if (big>=min)and yes then max:=max+(big-min)+1;
     end;
   end;
 end;

begin
 zl;
 gc;
 writeln(max);
end.
please tell me why?