Pagini recente » Cod sursa (job #1239416) | Cod sursa (job #1950736) | Cod sursa (job #409998) | Cod sursa (job #1517141) | Cod sursa (job #1331031)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
#define nmax 100010
int n,v[nmax],w[nmax],pre[nmax],s[nmax],k,t,l,p,u,mij;
int main()
{
int i,j;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
w[1]=1;
l=1;
for (i=2;i<=n;i++)
{
p=1;
u=l;
while (p<=u)
{
mij=(p+u)/2;
if (v[i]<=v[w[mij]])
u=mij-1;
else
p=mij+1;
}
pre[i]=w[p-1];
w[p]=i;
if (p>l)
l=p;
}
k=w[l];
for (i=l;i;i--)
{
s[i]=v[k];
k=pre[k];
}
cout<<l<<'\n';
for (i=1;i<=l;i++)
cout<<s[i]<<" ";
}