Pagini recente » Cod sursa (job #467847) | Cod sursa (job #1461418) | Cod sursa (job #85033) | Cod sursa (job #1299788) | Cod sursa (job #579941)
Cod sursa(job #579941)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define DIM 100001
int L[DIM], ANT[DIM], SOL[DIM];
int n, a[DIM];
int main()
{
int smax = -1, i, j,poz,k;
fin >> n;
for ( i = 0; i < n; ++i )
fin >> a[i];
for ( i = 0; i < n; ++i ) ANT[i]=-1;
for ( i = 0; i < n; ++i )
{
L[i] = 1;
for ( j = 0; j < i; ++j )
if ( L[j] + 1 > L[i] && a[i] > a[j] )
{ L[i] = L[j] + 1;
ANT[i]=j;
}
}
for ( i = 0; i < n; ++i )
if ( smax < L[i] )
{ smax = L[i];
poz=i;
}
fout << smax<<endl;
i=poz;
k=0;
while(ANT[i]!=-1)
{
SOL[k]=a[i]; k++;
i=ANT[i];
}
SOL[k]=a[i];
for(i=k;i>=0;i--) fout<<SOL[i]<<" ";
fin.close();
fout.close();
return 0;
}