# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
886474 | 2023-12-12T08:10:55 Z | boris_mihov | Money (IZhO17_money) | C++17 | 1 ms | 6492 KB |
#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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 6492 KB | Output is correct |
2 | Incorrect | 1 ms | 6492 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 6492 KB | Output is correct |
2 | Incorrect | 1 ms | 6492 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 6492 KB | Output is correct |
2 | Incorrect | 1 ms | 6492 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 6492 KB | Output is correct |
2 | Incorrect | 1 ms | 6492 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |