Pagini recente » Cod sursa (job #66956) | Cod sursa (job #2035427) | Cod sursa (job #2466723) | Cod sursa (job #2712491) | Cod sursa (job #1015901)
#include <iostream>
#include <fstream>
using namespace std;
int n, a[100000], L[100000], urm[100000], indx_max;
void citire()
{
ifstream fin("scmax.in");
fin>>n;
for (int i=0; i<n; i++)
fin>>a[i];
}
void rezolvare()
{
L[n-1]=1;
for (int i=n-2; i>=0; i--)
{
urm[i]=i; /// retin pozitia maximului
/// din secventa
/// ______
/// i+1, n
L[i]=0;
for (int j=i+1; j<n; j++)
if (a[i]<a[j] && L[urm[i]]<L[j])
urm[i]=j;
L[i]=L[urm[i]]+1;
if (L[i]>L[indx_max])
indx_max=i;
}
}
void afisare()
{
ofstream fout("scmax.out");
fout<<L[indx_max]<<'\n';
int i=indx_max;
while(i!=urm[i])
{
fout<<a[i]<<' ';
i=urm[i];
}
fout<<"\n";
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}