제출 #526100

#제출 시각아이디문제언어결과실행 시간메모리
526100TheKingAleksMoney (IZhO17_money)C++14
100 / 100
971 ms51524 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 1e6+2;
int a[MAX_N];
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    multiset<int> s;
    s.insert(a[0]);
    for(int i=1; i<n; i++)
    {
        if(a[i] >= a[i-1])
        {
            s.insert(a[i]);
        }
        else break;
    }
    int idx = s.size();
    int ans = 1;
    while(idx < n)
    {
        vector<int> cur;
        set<int>::iterator first_lower_bound = s.lower_bound(a[idx]+1);
        cur.push_back(a[idx]);
        idx++;
        ans++;
        while(idx < n)
        {
            if(a[idx] < a[idx-1]) break;
            set<int>::iterator tmp;
            if(a[idx] == a[idx-1] && cur[0] == cur[cur.size()-1]) tmp = s.lower_bound(a[idx]+1);
            else tmp = s.lower_bound(a[idx]);
            if(tmp != first_lower_bound)
            {
                break;
            }
            cur.push_back(a[idx]);
            idx++;
        }
        for(auto x: cur) s.insert(x);
//        for(auto x: cur)
//        {
//            cout<<x<<" ";
//        }
//        cout<<endl;
    }
    cout<<ans<<endl;
}
/**
6
3 6 4 5 1 2
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...