Submission #1334070

#TimeUsernameProblemLanguageResultExecution timeMemory
1334070WarinchaiMoney (IZhO17_money)C++20
100 / 100
140 ms8260 KiB
#include<bits/stdc++.h>
using namespace std;

int ar[1000005];
int inf=1e9;

struct fenwick{
    int info[1000005];
    void upd(int id,int val){
        if(id==0)return;
        for(int i=id;i<=1e6;i+=i&-i)info[i]+=val;
    }
    int fans(int id){
        int ans=0;
        for(int i=id;i>0;i-=i&-i)ans+=info[i];
        return ans;
    }
}fw;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;cin>>n;
    for(int i=1;i<=n;i++)cin>>ar[i];
    for(int i=1;i<=n;i++){
        fw.upd(ar[i],1);
    }
    int ans=0;
    for(int i=n;i>=1;){
        int mx=ar[i],mn=ar[i];
        //cerr<<"i:"<<i<<"\n";
        int cur=i;
        while(i>=1){
            if(ar[i]>ar[i+1]&&i!=cur)break;
            mn=min(mn,ar[i]);
            int val=fw.fans(mx-1)-fw.fans(mn);
            if(val>0){
                break;
            }
            fw.upd(ar[i],-1);
            i--;
        }
        ans++;
        if(i==0)break;
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...