제출 #1181110

#제출 시각아이디문제언어결과실행 시간메모리
1181110AtabayRajabliMoney (IZhO17_money)C++20
100 / 100
89 ms8264 KiB
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
using namespace std;

const int sz = 1e6 + 2, inf = 1e9;
int n, a[sz], f[sz];

void upd(int i, int x)
{
    for(; i < sz; i += i & -i) f[i] += x;
}

int get(int i, int r = 0)
{
    for(; i > 0; i -= i & -i) r += f[i];
    return r;
}

void solve()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    n = unique(a + 1, a + 1 + n) - a - 1;
    int cnt = 0;
    for(int i = 1; i <= n; )
    {
        upd(a[i], 1);
        for(i = i + 1; i <= n && a[i] > a[i - 1] && get(a[i]) - get(a[i - 1]) == 0; i++)
        {
            upd(a[i], 1);
        }
        if(a[i] > a[i - 1] && get(a[i]) - get(a[i] - 1) > 0 && get(a[i] - 1) - get(a[i - 1]) == 0) i++; 
        cnt++;
    }
    cout << cnt;
}

signed main()
{                                                                   
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    // cin >> t;
    while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...