Pagini recente » Cod sursa (job #275970) | Cod sursa (job #3218676) | Cod sursa (job #1406901) | Cod sursa (job #2589499) | Cod sursa (job #1319476)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[100001],w[100001],p[100001],i,j,n,ld,ls,mij,m,k;
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
if(v[i]<w[m])
{
ls=1;ld=m;
while(ld>ls)
{
mij=(ld+ls)/2;
if(w[mij]==v[i])
{
p[i]=p[mij];break;
}
else
if(w[mij]>v[i])
ld=mij-1;
else
ls=mij+1;
}
if(ld<=ls)
{
w[ls]=v[i];
p[i]=ls;
}
}
if(v[i]>w[m])
{
m++;
w[m]=v[i];
p[i]=m;
}
}i=n;
fout<<m<<"\n";n=m;
while(m)
{
if(p[i]==m)
{
w[m]=v[i];
m--;
}
i--;
}
for(i=1;i<=n;i++)
fout<<w[i]<<" ";
return 0;
}