Pagini recente » Cod sursa (job #1726723) | Cod sursa (job #2182896) | Cod sursa (job #1724996) | Cod sursa (job #1348574) | Cod sursa (job #1734796)
#include <fstream>
#define N 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
void afiseaza(int);
int x[N],s[N],v[N],p[N],b[N],i,n,L,R,M,lmax;
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
for(i=1;i<=n;i++)
{
L=0;R=lmax+1;
while(R-L>1)
{
M=(R+L)/2;
if(v[M]<x[i])
L=M;
else
R=M;
}
s[i]=R;
b[i]=p[L];
v[R]=x[i];
p[R]=i;
if(R>lmax)
lmax=R;
}
g<<lmax<<'\n';
afiseaza(p[lmax]);
return 0;
}
void afiseaza(int q)
{
if(q==0)
return;
afiseaza(b[q]);
g<<x[q]<<" ";
}