Submission #473657

#TimeUsernameProblemLanguageResultExecution timeMemory
473657ogibogi2004Money (IZhO17_money)C++14
100 / 100
524 ms15008 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+6;
int dp[MAXN],n,a[MAXN],mappeda[MAXN];
int fen[MAXN];
void update(int idx,int val)
{
    for(;idx<MAXN;idx+=idx&(-idx))
    {
        fen[idx]+=val;
    }
}
int query(int idx)
{
    int ret=0;
    for(;idx>0;idx-=idx&(-idx))
    {
        ret+=fen[idx];
    }
    return ret;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        update(a[i],+1);
    }
    int ans=1,last=a[n];
    for(int i=n;i>=1;i--)
    {
        if(i!=n&&a[i]>a[i+1])
        {
            ans++;
            last=a[i];
        }
        update(a[i],-1);
        if(query(last-1)-query(a[i])>0)
        {
            last=a[i];
            ans++;
        }
    }
    cout<<ans<<endl;
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...