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

Обсуждение задачи 1126. Магнитные бури

I use the algorithm of binary search, but still get WA.
Послано Koala 13 фев 2003 10:53
{This is my program. I really appreciate your help.}
program p1126;

const
  maxn=25000;

var
  a,c:array [1..maxn] of longint;
  m,n,k,tail,i,j:longint;

  procedure insert(x:longint);
  var
    low,high,mid:longint;
  begin
    low:=1; high:=tail;
    while low<high do
    begin
      mid:=(low+high) shr 1;
      if x>=c[mid] then low:=mid+1 else high:=mid;
    end;
    move(c[low],c[low+1],sizeof(longint)*(tail-low+1));
    inc(tail);
    c[low]:=x;
  end;

  procedure delete(x:longint);
  var
    low,high,mid:longint;
  begin
    low:=1; high:=tail; mid:=0;
    while low<high do
    begin
      mid:=(low+high) shr 1;
      if x=c[mid] then break;
      if x<c[mid] then high:=mid-1 else low:=mid+1;
    end;
    move(c[mid+1],c[mid],sizeof(longint)*(tail-mid));
    dec(tail);
  end;

begin
  read(m);
  n:=0;
  read(k);
  while k<>-1 do
  begin
    inc(n);
    a[n]:=k;
    read(k);
  end;

  c[1]:=-maxlongint; c[2]:=maxlongint;
  tail:=2;
  for j:=1 to m do insert(a[j]);
  writeln(c[tail-1]);

  i:=0;
  for j:=m+1 to n do
  begin
    inc(i);
    delete(a[i]);
    insert(a[j]);
    writeln(c[tail-1]);
  end;
end.