\documentclass[a4paper,oneside,fleqn,11pt,russian]{extarticle}
\usepackage[cp1251]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{amssymb,amsmath}
%\usepackage{pscyr}
\usepackage{graphicx} 
%****************************************************************************************
\textheight=26.8cm
\textwidth=17cm
\oddsidemargin=-0.5cm
\topmargin=-3.0cm
\headsep = 6pt
\voffset=1.2cm
\allowdisplaybreaks
%****************************************************************************************
\DeclareGraphicsExtensions {.eps}
%****************************************************************************************
\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\textbf{Последовательность. 7-9 класс}

Составьте программу, которая принимает на вход в первой строке натуральное число $N$ $(1 < N < 32768)$, а из второй строки считывает последовательность из $N$ целых чисел $A_i$ $(-32769 < A_i < 32768)$, разделённых пробелами. Как результат своей работы программа выводит количество элементов последовательности $A_i$ таких, что они положительны и их номер $i$ таков, что $min(H, L) \le i \le max(H, L)$, где $H$ -- номер максимального элемента последовательности, расположенного ближе всего к её концу, $L$ -- номер минимального элемента последовательности, расположенного ближе всего к её началу.      


\textit{Формат ввода:}  В первой строке содержится целое положительное число $N$ — длина последовательности $(1 < N < 32768)$. Во второй строке содержится последовательность, состоящая из $N$ целых чисел $A_i$ $(-32769 < A_i < 32768)$, разделённых пробелами. 

\textit{Формат вывода:} В первой и единственной строке выводится неотрицательное целое число, равное искомому количеству элементов последовательности (это число от $0$ до $32767$).

\textit{Пример №1:}

\textit{ввод:}

10

-1 -3 2 3 1 -3 0 3 -1 -2

\textit{вывод:}

4

\textit{Пример №2:}

\textit{ввод:}

10

-3 0 0 -3 0 -3 0 0 -1 -2

\textit{вывод:}

0

\textit{Пример №3:}

\textit{ввод:}

10

1 1 1 1 1 1 1 1 1 1

\textit{вывод:}

10

\textit{Пример №4:}

\textit{ввод:}

6

0 1 -1 1 -1 0

\textit{вывод:}

1

\textbf{Решение}

Эффективным является решение, в котором одновременно со вводом последовательности вычисляется ответ. При этом последовательность (или протяжённая её часть) не хранится в памяти. Хранятся только текущий элемент, текущие кандидаты на минимум / максимум. Реализуется один проход по последовательности. Идея решения состоит в подсчёте количества всех встреченных положительных элементов в переменной $TEMP$, а также количеств положительных элементов встреченных до текущего максимума (переменная $QTY\_BEFORE\_MAX$) и до текущего минимума (переменная $QTY\_BEFORE\_MIN$). По достижении конца ввода результат находится как модуль разности двух $QTY$, в некоторых случаях увеличенный на $1$. Можно вместо элементов, встреченных \textit{до}, считать элементы, встреченные \textit{после}.

\textbf{Код возможного решения}
\begin{verbatim}
program sequence79(input, output);
var
        A, N, I, MIN, MAX: integer;
        TEMP, QTY_BEFORE_MIN, QTY_BEFORE_MAX: integer;
begin
        readln(N);
        read(A);
        MIN := A;
        MAX := A;
        if (A > 0) then TEMP := 1 else TEMP := 0;
        QTY_BEFORE_MIN := TEMP;
        QTY_BEFORE_MAX := TEMP;
        for I:= 2 to N do begin
                read(A);
                if (A > 0) then inc(TEMP);
                if (A >= MAX) then begin
                        MAX := A;
                        QTY_BEFORE_MAX := TEMP;
                end (* then *)
                else if (A < MIN) then begin
                        MIN := A;
                        QTY_BEFORE_MIN := TEMP;
                end; (* if *)
        end; (* for *)
        TEMP := ABS(QTY_BEFORE_MAX - QTY_BEFORE_MIN);
        if (MAX > 0) and (QTY_BEFORE_MAX <= QTY_BEFORE_MIN)
           or (MIN > 0) AND (QTY_BEFORE_MIN <= QTY_BEFORE_MAX)
        then inc(TEMP);
        writeln(TEMP)
end.
\end{verbatim}
\end{document}