Submission #1140613

#TimeUsernameProblemLanguageResultExecution timeMemory
1140613NurislamMoney (IZhO17_money)C++20
0 / 100
1 ms324 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...