#2576. 正确的数列

正确的数列

题目描述

给一个序列,若序列首项为数列中所有数的最小值,末项为数列中的最大值,则我们称这是个正确的数列。

  • 例如,序列 [1,3,2,4][1, 3, 2, 4][1,2,1,2][1, 2, 1, 2] 是正确的,但序列 [1,3,2][1, 3, 2] 不是。

现在给你一个长度为 nn 的数组 aa。对于该数组的某个段 [al,al+1,,ar][a_l, a_{l+1}, \ldots, a_r]

  • 若满足 $a_l=\min(a_l,a_{l+1},\ldots,a_r),\ a_r=\max(a_l,a_{l+1},\ldots,a_r)$。则区间 [l,r][l,r] 为正确的段。

对于给定的序列,请求出该序列至少需要被分成多少段,才能使得每段均为正确的。序列 [2,3,1,1,5,1][2, 3, 1, 1, 5, 1] 可以分为三个正确的段:[2,3][2, 3][1,1,5][1, 1, 5][1][1]

编写程序,确定可以划分的最小正确段数。

输入格式

第一行一个整数 nn

接下来一行 nn 个数,分别为 a1,a2,,ana_1,a_2,\ldots,a_n

输出格式

输出可以划分的最小正确段数。

5
5 4 3 2 1
5
4
1 3 2 4
1
6
2 3 1 1 5 1
3
4
2 3 3 1
2

提示

  • 对于 30%30\% 的数据,1n5001 \leq n \leq 500

  • 对于 60%60\% 的数据,1n50001 \leq n \leq 5000

  • 对于所有数据,1n3×1051 \leq n \leq3 \times 10^51ai1091\leq a_i \leq 10^9