Submission #512334

#TimeUsernameProblemLanguageResultExecution timeMemory
512334KaguyaPo (COCI21_po)C++17
60 / 70
1078 ms16256 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("-O3") #pragma GCC optimize("-Ofast") int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> a(n); for (auto& t : a) cin >> t; int ans = 0; vector<bool> vis(n, false); set<int> se; for (int i = 0; i < n; i++) se.insert(a[i]); map<int, vector<int>> pos; for (int i = 0; i < n; i++) pos[a[i]].push_back(i); if (se.find(0) == se.end()) { ans += 1; se.erase(se.begin()); } for (int i = 0; i < n; i++) if (a[i] == 0) vis[i] = true; if (se.find(0) != se.end()) se.erase(0); while (!se.empty()) { int x = *(se.begin()); se.erase(se.begin()); for (auto t : pos[x]) { if (vis[t]) continue; vis[t] = true; int i = t; ans += 1; while (i < n && a[i] >= x) { if (a[i] == x) vis[i] = true; i++; } if (a[i] == x) vis[i] = true; } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...