Pagini recente » Cod sursa (job #1582810) | Cod sursa (job #2184675) | Cod sursa (job #145296) | Cod sursa (job #266428) | Cod sursa (job #2205715)
#include <fstream>
using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int poz[100005];
int v[100005];
int vf[100005];
int main()
{
int n,nr,i,l=1,st,dr,m,x;
cin>>n>>nr;
poz[1]=1;
v[1]=nr;
for (i=2;i<=n;i++)
{
cin>>nr;
st=1;
dr=l;
x=0;
while (st<=dr)
{
m=(st+dr)/2;
if (v[m]>=nr)
dr=m-1;
else
{
st=m+1;
x=m;
}
}
x++;
if (x==l+1)
l=l+1;
v[x]=nr;
poz[i]=x;
}
cout<<l<<endl;
x=l;
i=n;
while (i>0)
{
if (poz[i]==x)
{
vf[x]=v[i];
x--;
}
i--;
}
for (i=1;i<=l;i++)
cout<<v[i]<<" ";
return 0;
}