记录
#include <bits/stdc++.h>
#include <stack>
#define N 400005
using namespace std;
int n, a[N], ans, f[N][21];
stack<int> s;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
for(int i = 1; i <= n; i++)
f[i][0] = i;
for(int i = 1; i < 21; i++){
for(int j = 1; j <= n; j++){
if(a[f[i][j - 1]] <= a[f[i + (1 << (j - 1))][j - 1]])
f[i][j] = f[i][j - 1];
else
f[i][j] = f[i + (1 << (j - 1))][j - 1];
}
}
int maxx = a[n], minn = a[n], num = n;
for(int i = n - 1; i > 0; i--){
if(a[i] > maxx){
int s = log2(num - i + 1);
if(a[f[i][s]] <= a[f[num - (1 << s) + 1][s]])
i = f[i][s];
else
i = f[num - (1 << s) + 1][s];
ans++;
i--;
maxx = a[i], minn = a[i], num = i;
}
else
if(a[i] < minn)
minn = a[i];
if(i == 1 && a[i] != minn){
int s = log2(num - i + 1);
if(a[f[i][s]] <= a[f[num - (1 << s) + 1][s]])
i = f[i][s];
else
i = f[num - (1 << s) + 1][s];
ans++;
i--;
maxx = a[i], minn = a[i], num = i;
}
}
cout << ans + 1;
return 0;
}