Pagini recente » Cod sursa (job #532541) | Cod sursa (job #1544776) | Cod sursa (job #1386891) | Cod sursa (job #2445376) | Cod sursa (job #1552325)
#include <fstream>
#define Xp 100012
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int i,finish,n,poz,l,v[Xp],B[Xp],L[Xp];
int search_bin(int val)
{
int j,step;
for(j=0,step=(1<<17);step;step>>=1)
if(j+step<=B[0]&&B[j+step]<val) j+=step;
return j;
}
int main()
{
f>>n;
for(i=1;i<=n;++i) f>>v[i];
B[0]=L[1]=finish=1;
B[1]=v[1];
for(i=2;i<=n;++i)
{
poz=search_bin(v[i]);
if(poz==B[0]) ++B[0];
B[poz+1]=v[i];
L[i]=poz+1;
if(L[finish]<L[i]) finish=i;
}
g<<L[finish]<<'\n';
l=L[finish];
for(i=finish;l;--i)
if(L[i]==l) B[l]=v[i],--l;
for(i=1;i<=L[finish];++i) g<<B[i]<<" ";
return 0;
}