Cod sursa(job #3037994)

Utilizator AndreiMLCChesauan Andrei AndreiMLC Data 26 martie 2023 18:47:55
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <set>
using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

struct pos {
	int len;
	int ind;
	int val;
};
int n;
int maxlen = 1;
int v[100005];
int d[1000005];
int poz[1000005];
int start;
int main()
{
	int len = 0;
	f >> n;
	for (int i = 1; i <= n; i++)
	{
		f >> v[i];
	}
	d[n] = 1;
	poz[n] = -1;
	for (int i = n - 1; i >= 1; i--)
	{
		d[i] = 1;
		poz[i] = -1;
		for (int j = i + 1; j <= n; j++)
		{
			if (v[j] > v[i] && d[i] < d[j] + 1)
			{
				d[i] = d[j] + 1;
				poz[i] = j;
				if (maxlen < d[i])
				{
					maxlen = max(maxlen, d[i]);
					start = i;
				}
				
			}
		}
	}
	g << maxlen << '\n';
	int i = start;
	while (i != -1)
	{
		g << v[i] << ' ';
		i = poz[i];
	}

}