Pagini recente » Cod sursa (job #2286068) | Cod sursa (job #1040240) | Cod sursa (job #1562812) | Cod sursa (job #1987213) | Cod sursa (job #2834756)
#include <bits/stdc++.h>
using namespace std;
int main(){
// #ifndef ONLINE_JUDGE
// freopen("sclm2.in", "r", stdin);
// freopen("sclm2.out", "w", stdout);
// #endif
//
ifstream fin("scmax.in");
ofstream fout("scmax.in");
int n;
fin>>n;
vector<int> lis(1);
fin>>lis[0];
for(int i=2;i<=n;++i){
auto cb=[](int x, vector<int> &a){
int st=0, dr=a.size()-1;
int ans=dr;
while(st<=dr){
int mij=(st+dr)/2;
if(a[mij]==x) return mij;
if(a[mij]>x){
ans=mij;
dr=mij-1;
}else st=mij+1;
}
return ans;
};
int x; cin>>x;
if(x>lis.back()) lis.push_back(x);
else lis[cb(x,lis)]=x;
}
// for(int x:lis)
// cerr<<x<<" ";
// cout<<"\n";
fout<<lis.size();
}