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