Pagini recente » Cod sursa (job #1563262) | Cod sursa (job #1776016) | Cod sursa (job #1876664) | Cod sursa (job #2608879) | Cod sursa (job #1991035)
#include <iostream>
#include <fstream>
using namespace std;
#define in "scmax.in"
#define out "scmax.out"
#define N 100005
ifstream f(in);
ofstream g(out);
long a[N], p[N], v[N], b[N],n, i, j, L;
void afisare(int I)
{
if(I==0)
return;
afisare(b[I]);
g<<a[I]<<' ';
}
int main ()
{
f>>n;
for(i=1; i<=n; i++)
{
f>>a[i];
int lo=0,hi=L+1,mi;
while(hi-lo>1)
{
mi=(lo+hi)/2;
if(v[mi]<a[i])
lo=mi;
else
hi=mi;
}
if(hi==L+1)
L++;
v[hi]=a[i];
p[hi]=i;
b[i]=p[lo];
}
g<<L<<'\n';
afisare(p[L]);
g<<'\n';
f.close();
g.close();
return 0;
}