Pagini recente » Cod sursa (job #1487920) | Cod sursa (job #2160383) | Cod sursa (job #2246833) | Cod sursa (job #867334) | Cod sursa (job #1015895)
#include <fstream>
#define nmax 100005
using namespace std;
int n, a[nmax], L[nmax], urm[nmax];
int 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; /// retine 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];
}
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}