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...