Pagini recente » Cod sursa (job #227264) | Cod sursa (job #1620593) | Cod sursa (job #39938) | Cod sursa (job #156101) | Cod sursa (job #2794571)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n,v[100010],m[100010],nrm,r[100010];
int cb(int b,int e,int val)
{
if(e<b)
return e;
int a=(e+b)/2;
if(val>m[a])
return cb(a+1,e,val);
return cb(b,a-1,val);
}
int main()
{
in>>n;
for(int i=1;i<=n;++i)
in>>v[i];
for(int i=1;i<=n;++i)
{
int x=cb(1,nrm,v[i]);
m[x+1]=v[i];
if(x+1>nrm)
{
nrm=x+1;
for(int j=1;j<=nrm;++j)
r[j]=m[j];
}
}
out<<nrm<<'\n';
for(int i=1;i<=nrm;++i)
out<<r[i]<<' ';
return 0;
}