제출 #878190

#제출 시각아이디문제언어결과실행 시간메모리
878190heeheeheehaawMoney (IZhO17_money)C++17
100 / 100
991 ms62184 KiB
#include <bits/stdc++.h>

using namespace std;

int n, aib[1000005];
int v[1000005];

void update(int poz, int val)
{
    for(int i = poz; i <= 1000000; i += (i & (-i)))
        aib[i] += val;
    return;
}

int query(int poz)
{
    int sum = 0;
    for(int i = poz; i >= 1; i -= (i & (-i)))
        sum += aib[i];
    return sum;
}

int main()
{
    map<int, int> m1, m2;
    cin>>n;
    for(int i =1 ; i <= n; i++)
        cin>>v[i], m1[v[i]] = 1;
    /*int cnt = 0;
    for(auto it : m1)
        m2[it.first] = ++cnt;
    for(int i = 1; i <= n; i++)
        [i] = m*/

    int rez = 1, prev = 0;
    vector<int> secv;
    for(int i = 1; i <= n; i++)
    {
        if(v[i] < v[i - 1] || query(v[i] - 1) - query(prev) > 0)
        {
            for(auto it : secv)
                update(it, 1);
            secv.clear();
            secv.push_back(v[i]);
            prev = v[i];
            rez++;
        }
        else
        {
            secv.push_back(v[i]);
        }
    }

    cout<<rez;

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