Submission #522349

#TimeUsernameProblemLanguageResultExecution timeMemory
522349LucaIlieMoney (IZhO17_money)C++17
100 / 100
356 ms14984 KiB
#include <iostream>

#define MAX_N 1000000
#define MAX_A 1000000

using namespace std;

int v[MAX_N];

struct AIB {
    int aib[MAX_A + 1];

    void update( int i, int x ) {
        while ( i <= MAX_A ) {
            aib[i] += x;
            i += (i & -i);
        }
    }

    int query( int i ) {
        int s;

        s = 0;
        while ( i > 0 ) {
            s += aib[i];
            i -= (i & -i);
        }

        return s;
    }
};

AIB frecv;

int main() {
    int n, subSegm, i, j;

    cin >> n;
    for ( i = 0; i < n; i++ )
        cin >> v[i];

    subSegm = 0;
    i = 0;
    while ( i < n ) {
        j = i + 1;
        while ( j < n && v[j - 1] <= v[j] && frecv.query( v[j] - 1 ) - frecv.query( v[i] ) <= 0 )
            j++;

        for ( ; i < j; i++ )
            frecv.update( v[i], 1 );
        subSegm++;
    }

    cout << subSegm;

    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...