Pagini recente » Cod sursa (job #1418686) | Cod sursa (job #769162) | Cod sursa (job #805667) | Cod sursa (job #1434537) | Cod sursa (job #1199560)
#include<fstream>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int a[100005],b[100005],rs[100005],i,j,nr,v,n;
int search(int x) {
int st,dr,pivot;
st=1; dr=v;
while(st<=dr)
{
pivot=(st+dr)/2;
if(x<=b[pivot]) dr=pivot-1;
else st=pivot+1;
}
return st;
}
int main()
{
ifstream cin("scmax.in");
ofstream cout("scmax.out");
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
b[1]=a[1]; v=1; rs[1]=1;
for(i=2;i<=n;i++)
{
j=search(a[i]);
b[j]=a[i]; rs[i]=j;
v=max(v,j);
}
nr=v;
for(i=n;i>=1;i--) if(rs[i]==nr) b[nr]=a[i],nr--;
cout<<v<<'\n';
for(i=1;i<=v;i++) cout<<b[i]<<' ';
return 0;
}