Submission #204972

#TimeUsernameProblemLanguageResultExecution timeMemory
204972dolphingarlicMoney (IZhO17_money)C++14
100 / 100
207 ms15096 KiB
#include <bits/stdc++.h>
using namespace std;
 
int n, a[1000005], bit[1000005];
 
void update(int pos) {
    for (; pos < 1000005; pos += (pos & (-pos))) bit[pos]++;
}
 
int query(int a) {
    int ans = 0;
    for (; a; a -= (a & (-a))) ans += bit[a];
    return ans;
}
 
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    int ans = 0;
    update(a[0]);
    for (int i = 0; i < n;) {
        int j = i++;
        ans++;
        while (i < n && query(a[i] - 1) <= query(a[j]) && a[i] >= a[i - 1]) i++;
        for (int k = j; k < i; k++) update(a[k]);
    }
    cout << ans;
    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...