题库练习 Discrete Centrifugal Jumps
← 上一题 下一题 →

A13704 | Discrete Centrifugal Jumps

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

There are $n$ beautiful skyscrapers in New York, the height of the $i$ -th one is $h_i$ . Today some villains have set on fire first $n - 1$ of them, and now the only safety building is $n$ -th skyscraper.

Let's call a jump from $i$ -th skyscraper to $j$ -th ( $i < j$ ) discrete, if all skyscrapers between are strictly lower or higher than both of them. Formally, jump is discrete, if $i < j$ and one of the following conditions satisfied:

- $i + 1 = j$
- $\max(h_{i + 1}, \ldots, h_{j - 1}) < \min(h_i, h_j)$
- $\max(h_i, h_j) < \min(h_{i + 1}, \ldots, h_{j - 1})$ .

At the moment, Vasya is staying on the first skyscraper and wants to live a little longer, so his goal is to reach $n$ -th skyscraper with minimal count of discrete jumps. Help him with calcualting this number.

输入格式

The first line contains a single integer $n$ ( $2 \le n \le 3 \cdot 10^5$ ) — total amount of skyscrapers.

The second line contains $n$ integers $h_1, h_2, \ldots, h_n$ ( $1 \le h_i \le 10^9$ ) — heights of skyscrapers.

输出格式

Print single number $k$ — minimal amount of discrete jumps. We can show that an answer always exists.

输入输出样例

输入 #1
5
1 3 1 4 5
输出 #1
3
输入 #2
4
4 2 2 4
输出 #2
1
输入 #3
2
1 1
输出 #3
1
输入 #4
5
100 1 100 1 100
输出 #4
2
C++ 编辑器
输入
输出