Pagini recente » Istoria paginii runda/luca_oji2 | Cod sursa (job #1250108) | Cod sursa (job #1840863) | Cod sursa (job #1300487) | Cod sursa (job #2133590)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream fin("lis.in");
ofstream fout("lis.out");
int a[NMAX];
int lgmax[NMAX];
int urm[NMAX];
int n;
int main()
{
int i, j, urmatorul, maxim, pozmax;
fin >> n;
for(i = 0; i < n; i++) fin >> a[i];
//Cel mai mic sufix are un element
lgmax[n - 1] = 1; urm[n - 1] = -1;
for(i = n - 2; i >= 0; i--)
{
maxim = 1; urmatorul = -1;
for(j = i + 1; j < n; j++)
if(a[i] < a[j] && 1 + lgmax[j] > maxim)
{
maxim = 1 + lgmax[j];
urmatorul = j;
}
lgmax[i] = maxim; urm[i] = urmatorul;
}
//AFISARE
maxim = lgmax[0]; pozmax = 0;
for(i = 1; i< n; i++)
if(maxim < lgmax[i])
{
maxim = lgmax[i]; pozmax = i;
}
fout << maxim << '\n';
fout << a[pozmax];
while(urm[pozmax] != -1)
{
pozmax = urm[pozmax];
fout << ' ' << a[pozmax];
}
fout <<'\n';
fout.close();
return 0;
}