Pagini recente » Cod sursa (job #2503341) | Cod sursa (job #2249641) | Cod sursa (job #2046695) | Cod sursa (job #1526035) | Cod sursa (job #1261894)
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream f("lis.in");
ofstream g("lis.out");
int v[10001],p[10001],q[10001],sol[10001];
int main ()
{ int n,i,nq,*it,poz,lis;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
nq=1;q[1]=v[1];p[1]=1;
for(i=2;i<=n;i++)
{ it= upper_bound(q+1,q+nq+1,v[i]);
poz=(int)(it-q);
if(poz>nq)
{ ++nq;
}
q[poz]=v[i];
p[i]=poz;
}
g<<nq<<"\n";
lis=nq;
poz=n;
for(i=lis;i>0;i--)
{ while(p[poz]!=lis)
poz--;
sol[lis]=v[poz];
lis--;
}
for(i=1;i<=nq;i++)
g<<sol[i]<<' ';
}