Pagini recente » Cod sursa (job #2726027) | Cod sursa (job #2972394) | Cod sursa (job #1309376) | Cod sursa (job #3202504) | Cod sursa (job #1254062)
#include <fstream>
#define N 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,p[N],x[N],v[N],b[N],L,R,M,B,Lmax,oo=2000000001;
void afisare(int);
int main()
{
f>>n;
int i;
for(i=1;i<=n;i++)
{
f>>x[i];
v[i]=oo;
}
for(i=1;i<=n;i++)
{
for(L=0,R=Lmax+1;R-L>1;)
{
M=(L+R)/2;
if(v[M]<x[i])
L=M;
else
R=M;
}
b[i]=p[L];
if(v[R]==oo)
Lmax++;
if(x[i]<v[R])
{
v[R]=x[i];
p[R]=i;
}
}
g<<Lmax<<'\n';
afisare(p[Lmax]);
return 0;
}
void afisare(int i)
{
if(!i)
return;
afisare(b[i]);
g<<x[i]<<' ';
}