Pagini recente » Cod sursa (job #1599032) | Cod sursa (job #2218366) | Cod sursa (job #175516) | Cod sursa (job #2373271) | Cod sursa (job #2571941)
#include<fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int sol[200010],n,poz[200010],nrmax,v[200010];
int main () {
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
sol[1]=v[1];
nrmax=1;
poz[1]=1;
for(int i=2;i<=n;i++){
int st=1,dr=nrmax,pozc=-1;
while(st<=dr){
int mij=(st+dr)/2;
if(v[i]>sol[mij])
st=mij+1;
else{
pozc=mij;
dr=mij-1;
}
}
if(pozc==-1){
nrmax++;
sol[nrmax]=v[i];
poz[i]=nrmax;
}
else{
sol[pozc]=v[i];
poz[i]=pozc;
}
}
cout<<nrmax<<endl;
for(int i=1;i<=nrmax;i++)
cout<<sol[i]<<" ";
return 0;
}