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

Обсуждение задачи 1346. Интервалы монотонности

I'm WA in #21. Can somebody help me ? Thanks a lot .
Послано Short_gun 21 дек 2005 09:15
Here is my code :
Const         tfi         =      '';
              tfo         =      '';
              max         =      10000 + 1;


Type          arr1I       =      array [0..max] of integer        ;


Var           f           :      arr1I                  ;
              a,b         :      integer                ;
              res         :      integer                ;
              fi,fo       :      text                   ;



Procedure Readfile;
Var     i : integer ;
Begin
     Assign(fi,tfi);
     Reset(fi);
     Readln(fi,a,b);
     For i := a to b do read(fi,f[i]);
     Close(fi);
End;

{--------------------------------------------------------------------}

Procedure Process;
Var     i,x,j : integer ;
Begin
     res := 1;
     If b - a = 1 then exit;
     res := 0;
     i := a;
     Repeat
           Inc(res);
           If f[i] <= f[i + 1] then
           Begin
                x := f[i + 1];
                j := i + 1;
                Repeat
                      If x <= f[j + 1] then
                      Begin
                           x := f[j + 1];
                           Inc(j);
                      End
                      Else break;
                      If j = b then exit;
                Until false;
                i := j + 1;
           End
           Else
           Begin
                x := f[i + 1];
                j := i + 1;
                Repeat
                      If x >= f[j + 1] then
                      Begin
                           x := f[j + 1];
                           Inc(j);
                      End
                      Else break;
                      If j = b then exit;
                Until false;
                i := j + 1;
           End;
           If i = b then
           Begin
                Inc(res);
                break;
           End;
     Until i > b;
End;

{--------------------------------------------------------------------}

Procedure Writefile;
Begin
     Assign(fo,tfo);
     Rewrite(fo);
     Writeln(fo,res);
     Close(fo);
End;

{--------------------------------------------------------------------}

Begin
     Readfile;
     Process;
     Writefile;
End.


Edited by author 21.12.2005 09:16