Pagini recente » Cod sursa (job #1849214) | Cod sursa (job #10624) | Cod sursa (job #1831868) | Cod sursa (job #3156297) | Cod sursa (job #2321012)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int lung[100002],pred[100002],v[100002],sol[100002];
int main()
{
int n,jtrebuincios;
fin>>n;
lung[1]=1;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=2;i<=n;i++)
{
int vmax=0;
for(int j=1;j<i;j++)
{
if(v[j]>vmax && v[j]<v[i])
{vmax=v[j]; jtrebuincios=j;}
}
if(vmax!=0)
{
lung[i]=1+lung[jtrebuincios];
pred[i]=jtrebuincios;
}
else
{
lung[i]=1;
pred[i]=-1;
}
}
pred[1]=-1;
int vmax=0,ilung;
for(int i=1;i<=n;i++)
{
if(lung[i]>vmax)
{
vmax=lung[i];
ilung=i;
}
}
fout<<vmax<<'\n';
sol[1]=v[ilung];
int k=1;
int copie=vmax;
while(copie>1)
{
sol[++k]=v[pred[ilung]];
ilung=pred[ilung];
copie--;
}
for(int i=vmax;i>=1;i--)
fout<<sol[i]<<" ";
return 0;
}