Pagini recente » Cod sursa (job #564246) | Cod sursa (job #116493) | Cod sursa (job #2848229) | Cod sursa (job #1295773) | Cod sursa (job #1638314)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n,i,x,s,d,p,mij,v[100010],ok,l[100010],D,a[100010],poz,maxl;
int z,afis[100010];
int main()
{
fin >>n;
fin>>a[1];
x=a[1];
v[1]=x;
p=0;
s=1;
mij=0;
l[1]=1;
d=1;
for (i=2;i<=n;i++)
{
s=1;
D=d;
ok=0;
fin >>a[i];
x=a[i];
while (s<=d)
{
mij=(d-s)/2+s;
if (v[mij]<x)
{
s=mij+1;
ok=1;
}
else
{
d=mij-1;
ok=2;
}
}
if (ok==1)
{
v[mij+1]=x;
l[i]=mij+1;
d=mij+1;
}
else
{
v[mij]=x;
l[i]=mij;
d=D;
}
}
for (i=1;i<=n;i++)
{
if (l[i]>=maxl)
{
maxl=l[i];
poz=i;
}
// fout << l[i]<<' ' ;
}
afis[++z]=poz;
fout <<maxl<<'\n';
while (maxl)
{
for (i=poz-1;i>=1;i--)
{
if (l[i]==maxl)
{
if (a[i]<a[poz])
{
afis[++z]=i;
poz=i;
break;
}
}
}
maxl--;
}
for (i=z;i>=1;i--)
fout << a[afis[i]]<<' ';
return 0;
}