Pagini recente » Cod sursa (job #399000) | Cod sursa (job #2627230) | Cod sursa (job #1831581) | Cod sursa (job #646351) | Cod sursa (job #568369)
Cod sursa(job #568369)
# include <fstream>
# include <iostream>
# define DIM 100003
using namespace std;
int n, v[DIM], w[DIM], l[DIM], t[DIM], lmax, p;
void f (int st, int dr, int x)
{
if (st==dr)
{
if (v[l[st]]<x)
p=st;
return;
}
int mij=(st+dr)/2;
if (v[l[mij]]<x)
{
p=mij;
f(mij+1, dr, x);
}
else
f(st, mij, x);
}
int main ()
{
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
fin>>n;
for(int i=1;i<=n;++i)
fin>>v[i];
for(int i=1;i<=n;++i)
{
f(0, lmax, v[i]);
if (l[p+1]==0)l[++lmax]=i, t[i]=l[p];
else l[p+1]=i, t[i]=l[p];
}
int poz=lmax;
fout<<lmax<<"\n";
for(int i=l[lmax];i;i=t[i])
w[poz--]=v[i];
for(int i=1;i<=lmax;++i)
fout<<w[i]<<" ";
return 0;
}