#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
vector<int> a(n);
for(int &i : a) cin >> i;
if(is_sorted(a.begin(), a.end())) {
return cout << 0 << '\n', 0;
}
vector<int> b = a;
sort(b.begin(), b.end());
b.erase(unique(b.begin(), b.end()), b.end());
map<int,int> pre;
for(int i = 1; i < b.size(); i++)pre[b[i]] = b[i-1];
vector<array<int,2>> v;
for(int i = 0; i < n; ){
int r = i;
while(r+1 < n && (a[r] == pre[a[r+1]] || a[r] == a[r+1]))r++;
v.push_back({a[r], a[i]});
i = r+1;
};
int ans = v.size();
set<int> st;
for(auto [r, l] : v){
if(st.empty()){
st.insert(r);
continue;
}
if(l > (*--st.end()))st.insert(r);
else{
auto x = st.lower_bound(l);
if(*x > r){
st.erase(x);
st.insert(r);
}
}
};
cout << ans-st.size() + 1 << '\n';
};
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |