Pagini recente » Cod sursa (job #613255) | Cod sursa (job #1493244) | Cod sursa (job #166162) | Cod sursa (job #1183174) | Cod sursa (job #1767720)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,j,v[10001],maxim,poz[100001],p,u,mij,sol[100001],ant[100001],m,t;
int k;
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
{
p=1;u=k;
// caut binar pozitia lui v[i] in sirul poz[i] care are k elem
while(p<=u)
{
mij=(p+u)/2;
if(v[i]==v[poz[mij]])
{
p=mij;
break;
}
else
if(v[i]>v[poz[mij]])
p=mij+1;
else
u=mij-1;
}
poz[p]=i;
ant[i]=poz[p-1];
if(p>k)
k++;
}
fout<<k<<"\n";
sol[1]=poz[k];
m++;
t=poz[k];
while(ant[t]!=0)
{
t=ant[t];
sol[++m]=t;
}
for(i=m;i>=1;i--)
fout<<v[sol[i]]<<" ";
return 0;
}