Submission #1103540

#TimeUsernameProblemLanguageResultExecution timeMemory
1103540stdfloatMoney (IZhO17_money)C++17
0 / 100
1 ms336 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set; #define ofk order_of_key int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<int> a(n); for (auto &i : a) { cin >> i; i--; } vector<int> ps(n); for (int i = 0; i < n; i++) ps[a[i]] = i; int cnt = 0; indexed_set s; vector<bool> vis(n); for (int i = 0; i < n; i++) { if (vis[ps[i]]) continue; cnt++; vector<int> v; for (int j = ps[i]; j < n && (j == ps[i] || a[j - 1] < a[j]) && !vis[j] && s.ofk(i) == s.ofk(a[j]); j++) { vis[j] = true; v.push_back(a[j]); if (s.find(a[j]) != s.end()) s.erase(a[j]); } for (auto j : v) s.insert(j); } cout << cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...