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

Обсуждение задачи 1116. Кусочно-постоянная функция

help!!why I got wang answer!!!!!!!
Послано qwt 31 мар 2002 15:07
const
  maxn=15000;
var
  a,b,c:array[0..maxn,1..3] of integer;
  aa,bb,na,nb,nc,i,j,k,p,q:integer;
procedure sortb(x,y:integer);
var
  i,j,k:integer;
begin
  if x>=y then exit;
  i:=x;j:=y;
  k:=b[i,1];
  b[0]:=b[i];
  while i<j do begin
    while (i<j)and(b[j,1]>k) do dec(j);
    if i<j then begin b[i]:=b[j];inc(i);end;
    while (i<j)and(b[i,1]<k) do inc(i);
    if i<j then begin b[j]:=b[i];dec(j);end;
  end;
  b[i]:=b[0];
  sortb(x,i-1);sortb(i+1,y);
end;

begin

  fillchar(b,sizeof(b),0);c:=b;
  read(na);for i:=1 to na do for j:=1 to 3 do read(b[i,j]);
  sortb(1,na);a:=b;
  fillchar(b,sizeof(b),0);
  read(nb);for i:=1 to nb do for j:=1 to 3 do read(b[i,j]);
  sortb(1,nb);
  i:=1;
  j:=1;
  nc:=0;
  while (i<=na)and(j<=nb) do begin
    while (j<=nb)and(b[j,2]<=a[i,1]) do inc(j);
    if j>nb then break;
    while (i<=na)and(a[i,2]<=b[j,1]) do begin
      inc(nc);
      c[nc]:=a[i];
      inc(i);
    end;
    if i>na then break;
    if b[j,1]<=a[i,1] then begin
      if b[j,2]<a[i,2] then begin a[i,1]:=b[j,2];inc(j);end else inc
(i);
    end else begin
      if b[j,2]<a[i,2] then begin
        inc(nc);c[nc,1]:=a[i,1];c[nc,2]:=b[j,1];c[nc,3]:=a[i,3];
        a[i,1]:=b[j,2];inc(j);
      end else begin
        inc(nc);c[nc,1]:=a[i,1];c[nc,2]:=b[j,1];c[nc,3]:=a[i,3];
        inc(i);
      end;
    end;
  end;
  for j:=i to na do begin
    inc(nc);c[nc]:=a[j];
  end;
  write(nc);for i:=1 to nc do for j:=1 to 3 do write(' ',c[i,j]);
end.