Pagini recente » Cod sursa (job #1647808) | Cod sursa (job #589562) | Cod sursa (job #2064794) | Cod sursa (job #1161789)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int j,n,a,b,i,maxi,rep,v[100001],w[100001],p[100001],f[100000],poz,ld,ls,mij,ok;
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
w[1]=v[1];
p[1]=1;
poz=2;
j=1;
for(i=2;i<=n;i++)
{
if(v[i]>w[j])
{
j++;
w[j]=v[i];
p[poz]=j;
poz++;
}
else
{
ls=1;ld=j;
while(ls!=ld)
{
mij=(ls+ld)/2;
if(v[i]<w[mij])
ld=mij-1;
else
ls=mij+1;
}
w[ld]=v[i];
p[poz]=ld;
poz++;
}
}a=j;
for(i=poz-1;i>0&&j!=0;i--)
{
if(p[i]==j)
{
f[j]=w[j];
j--;
}
}
fout<<a<<'\n';
for(i=1;i<a;i++)
fout<<f[i]<<" ";
fout<<f[i];
fin.close();
fout.close();
return 0;
}