Pagini recente » Cod sursa (job #2650357) | Cod sursa (job #2693326) | Cod sursa (job #2762269) | Cod sursa (job #1580900) | Cod sursa (job #3038283)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n,i,st,dr,m,mij,l,t[100005],v[100005],d[100005];
void f (int i)
{
if (i>0)
{
f (t[i]);
fout<<v[i]<<" ";
}
}
int main()
{
fin>>n;
for (i=1; i<=n; i++)
fin>>v[i];
d[1]=1;
m=1;
for (i=2; i<=n; i++)
{
st=1;
dr=m;
while (st<=dr)
{
mij=st+(dr-st)/2;
if (v[d[mij]]>=v[i])
dr=mij-1;
else
st=mij+1;
}
if (st>m)
{
m++;
d[m]=i;
t[i]=d[st-1];
}
else
{
d[st]=i;
t[i]=d[st-1];
}
}
fout<<m<<"\n";
f (d[m]);
return 0;
}