# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
886473 | boris_mihov | Money (IZhO17_money) | C++17 | 1 ms | 6492 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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[i]])
{
ans--;
endHere[prev[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)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |