Submission #867997

#TimeUsernameProblemLanguageResultExecution timeMemory
86799712345678Money (IZhO17_money)C++17
100 / 100
862 ms61956 KiB
#include <bits/stdc++.h>

using namespace std;

const int inf=1e9, nx=1e6+5;
int n, v[nx], l, idx, dp[nx];
set<int> s;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n;
    s.insert(1e9);
    for (int i=1; i<=n; i++)
    {
        cin>>v[i];
        //cout<<i<<' '<<v[i]<<' '<<l<<'\n';
        if (v[i]>=v[i-1]&&v[i]<=l) 
        {
            dp[i]=dp[idx]+1;
        }
        else
        {
            while (idx<i) s.insert(v[idx]), idx++;
            l=*s.upper_bound(v[i]);
            idx=i-1;
            dp[i]=dp[i-1]+1;
        }
        //cout<<"here"<<' '<<dp[i]<<'\n';
    }
    cout<<dp[n];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...