Pagini recente » Cod sursa (job #1057906) | Cod sursa (job #2384694) | Cod sursa (job #932351) | Cod sursa (job #944929) | Cod sursa (job #2148117)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int a[100001],m[100001],k,mid,b[100001],i,j,ls,ld,n,l;
int main()
{
f>>n;l=0;
for (i=1;i<=n;i++)
{
f>>a[i];
ls=1;
ld=l;
while (ls<=ld)
{
mid=(ls+ld)/2;
if (a[m[mid]]<a[i]) ls=mid+1; else ld=mid-1;
}
m[ls]=i;
b[i]=m[ls-1];
if (ls>l) l=ls;
}
g<<l<<"\n";
k=m[l];
for (i=1;i<=l;i++)
{
m[i]=a[k];
k=b[k];
}
for (i=l;i>=1;i--)
g<<m[i]<<" ";
return 0;
}