This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |