Pagini recente » Cod sursa (job #2430701) | Cod sursa (job #876709) | Cod sursa (job #169254) | Cod sursa (job #2664157) | Cod sursa (job #1652106)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
int i,j,n;
f>>n;
int *a;
a=new int[n];
for(i=0;i<n;i++)
f>>a[i];
int *maxime,*urmatorul;
maxime=new int[n];
urmatorul=new int[n];
maxime[n-1]=1;
urmatorul[n-1]=-1;
int maxx=0,poz=0;
for(i=n-2;i>=0;i--)
{
maxime[i]=1;
urmatorul[i]=-1;
for(j=i+1;j<n;j++)
if(a[i]<a[j]&&maxime[i]<=maxime[j])
{
maxime[i]=maxime[j]+1;
urmatorul[i]=j;
if(maxx<maxime[i])
{
maxx=maxime[i];
poz=i;
}
}
}
g<<maxx<<'\n';
g<<a[poz]<<" ";
for(i=1;i<maxx;i++)
{
poz=urmatorul[poz];
g<<a[poz]<<" ";
}
delete []maxime;
delete []urmatorul;
/*maxime[0]=1;
urmatorul[0]=-1;
for(i=1;i<n;i++)
{
maxime[i]=1;
urmatorul[i]=-1;
for(j=0;j<i;j++)
if(a[j]<a[i]&&maxime[i]<=maxime[j])
{
maxime[i]=maxime[j]+1;
urmatorul[i]=j;
}
}
int maxx=0,poz=0;
for(i=1;i<n;i++)
if(maxx<maxime[i])
{
maxx=maxime[i];
poz=i;
}
nou[maxx-1]=a[poz];
for(i=maxx-2;i>=0;i--)
{
poz=urmatorul[poz];
nou[i]=a[poz];
}
delete []maxime;
delete []urmatorul;
g<<maxx<<'\n';
for(i=0;i<maxx;i++)
g<<nou[i]<<" ";
delete []nou;
delete []a;*/
return 0;
}