Pagini recente » Cod sursa (job #3139128) | Cod sursa (job #2893761) | Cod sursa (job #722685) | Cod sursa (job #2758370) | Cod sursa (job #291665)
Cod sursa(job #291665)
#include<fstream.h>
ifstream fin("scmax.in");
ofstream fout("scmax.out");
long v[100005],p[100005],q[100005],n,l,i,t,g=0;
const long s=2000000001;
long cautare(long k,long x, long y)
{long m=x+(y-x)/2;
if (x==y)
{if (y>l) q[++l+1]=s;
q[x]=k;
return x;}
else if (k<=q[m])
return cautare(k,x,m);
else return cautare(k,m+1,y);}
int main()
{fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
q[1]=s;l=0;
for (i=1;i<=n;i++)
p[i]=cautare(v[i],1,l+1);
fout<<l<<'\n';
t=l;
for (i=l;i>=1;i--)
if (p[i]==t)
{g++;
q[g]=v[t];
t--;}
for (i=1;i<=l;i++)
fout<<q[i]<<' ';
fout.close();
return 0;}