Submission #886474

#TimeUsernameProblemLanguageResultExecution timeMemory
886474boris_mihovMoney (IZhO17_money)C++17
0 / 100
1 ms6492 KiB
#include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <bitset> #include <vector> #include <stack> typedef long long llong; const int MAXN = 1000000 + 10; int n; int a[MAXN]; int b[MAXN]; int prev[MAXN]; bool endHere[MAXN]; std::stack <int> st; void solve() { std::iota(b + 1, b + 1 + n, 1); std::sort(b + 1, b + 1 + n, [&](int x, int y) { return a[x] < a[y] || (a[x] == a[y] & x < y); }); for (int i = 1 ; i <= n ; ++i) { a[b[i]] = i; } for (int i = 1 ; i <= n ; ++i) { while (st.size() && a[st.top()] > a[i]) { st.pop(); } if (st.size()) { prev[i] = st.top(); } st.push(i); } int ans = n; for (int i = 1 ; i <= n ; ++i) { endHere[b[i]] = true; if (endHere[prev[b[i]]]) { ans--; endHere[prev[b[i]]] = false; } } std::cout << ans << '\n'; } void input() { std::cin >> n; for (int i = 1 ; i <= n ; ++i) { std::cin >> a[i]; } } void fastIOI() { std::ios_base :: sync_with_stdio(0); std::cout.tie(nullptr); std::cin.tie(nullptr); } int main() { fastIOI(); input(); solve(); return 0; }

Compilation message (stderr)

money.cpp: In lambda function:
money.cpp:24:37: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   24 |         return a[x] < a[y] || (a[x] == a[y] & x < y);
      |                                ~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...