Submission #491891

#TimeUsernameProblemLanguageResultExecution timeMemory
491891WhiteMoney (IZhO17_money)C++14
45 / 100
1560 ms3376 KiB
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;

int num[1000001];
vector<int>ans,b;

int binn(int now){
    int l=0,r=ans.size()-1,mid;
    mid=(l+r)/2;
    //cout<<r<<endl;
    while(l<r){
        if(ans[mid]<=num[now])l=mid+1;
        else r=mid;
        mid=(l+r)/2;
    }
    //cout<<"adwwda"<<now<<endl;
    return l;
}

int main (){

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n,br=0;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>num[i];
    ans.push_back(0);ans.push_back(1000002);

    for(int i=1;i<=n;){
        int j=0;
        //cout<<"daw"<<endl;
        j=binn(i);
        ans.insert(ans.begin()+j,num[i]);
        br++;
        i++;
        int bro=j+1;
        while(i<=n && num[i-1]<=num[i] && num[i]<=ans[j+1]){
            b.push_back(num[i]);
            i++;
        }
        if(b.empty()==false)ans.insert(ans.begin()+bro, b.begin(), b.end());
        while(b.empty()==false)b.pop_back();
    }
    cout<<br<<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...