#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const int N = 1e6;
int a[N];
void SOLVE() {
int n; cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
int counter = 0;
multiset<pair<int, int>> ms;
ms.insert({0, 1e7});
for(int i = 0; i < n;){
int mn = a[i], j = i;
auto it = ms.lower_bound({mn, 1e7});
it--;
pair<int, int> c = *it;
while(j + 1 < n && a[j + 1] >= a[j] && a[j + 1] <= c.second){
j++;
}
ms.erase(ms.find(c));
ms.insert({c.first, a[i]});
for(int k = i; k < j; k++){
ms.insert({a[k], a[k + 1]});
}
ms.insert({a[j], c.second});
counter++;
i = j + 1;
}
cout << counter << endl;
}
signed main(){
ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr);
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int o_o = 1; //cin >> o_o;
while(o_o --) SOLVE();
return 0;
}
# | 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... |