Pagini recente » Cod sursa (job #610145) | Cod sursa (job #2473158) | Cod sursa (job #1862740) | Cod sursa (job #773104) | Cod sursa (job #2842479)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int NMAX=1000;
int v[NMAX+2],lung[NMAX+2],poz[NMAX+2],n,lgmax,imax;
void maxim(int i,int &lgmax,int &imax)
{
lgmax=0;
imax=0;
for(int j=i+1;j<=n;++j)
{
if(v[j]>v[i] && lgmax<lung[j]){
lgmax=lung[j];
imax=j;
}
}
}
int main()
{
cin>>n;
lung[n]=1;
poz[n]=0;
for(int i=1;i<=n;++i)
cin>>v[i];
for(int i=n-1;i>=1;--i)
{
maxim(i,lgmax,imax);
lung[i]=lgmax+1;
poz[i]=imax;
}
int indice=1;
int maxi=lung[1];
for(int i=2;i<=n;i++)
{
if(lung[i]>maxi)
{
maxi=lung[i];
indice=i;
}
}
cout<<maxi<<'\n';
while(indice>0)
{
cout<<v[indice]<<" ";
indice=poz[indice];
}
return 0;
}