Submission #377070

#TimeUsernameProblemLanguageResultExecution timeMemory
377070ijxjdjdMoney (IZhO17_money)C++14
45 / 100
1597 ms51180 KiB
#include <bits/stdc++.h> #define FR(i, N) for (int i = 0; i < int(N); i++) #define all(x) begin(x), end(x) using namespace std; using ll = long long; map<int, int> lft; const int MAXN = (int)(1e6); int arr[MAXN + 5]; int main() { cin.tie(0); cin.sync_with_stdio(0); int N; cin >> N; FR(i, N) { cin >> arr[i]; lft[arr[i]]++; } int lst = arr[N-1]; int ans = 1; bool ori = true; for (int i = N-2; i >= 0; i--) { int& a = lft[arr[i+1]]; bool gone = false; a--; if (a == 0) { lft.erase(arr[i+1]); gone = true; } if (lst == arr[i]) { } else { auto it = lft.lower_bound(lst); if (it != lft.begin() && (*prev(it)).first == arr[i]) { if (!gone) { if (ori) { ori = false; } else { ans++; ori = true; } } else { ori = false; } } else { ans++; ori = true; } } lst = arr[i]; } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...