Cod sursa(job #1478175)

Utilizator alexandrumeterezAlexandru Meterez alexandrumeterez Data 28 august 2015 02:28:13
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iostream>

const int NMAX = 1001;
const int inf = 0x3f3f3f3f;
using namespace std;


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

int N;
int v[NMAX];
int d[NMAX];
int answer;
int prei[100];
int poz[100];

int main()
{
	f >> N;

	for (int i = 1; i <= N; ++i)
	{
		f >> v[i];
	}

	//rezolvare
	d[1] = 1;
	for (int i = 1; i <= N; ++i)
	{
		d[i] = 1;
		poz[i] = -2;
		for (int j = 1; j <= i - 1; ++j)
		{
			if (v[j] < v[i])
			{
//				d[i] = max(d[i], 1 + d[j]);
				if(d[j]+1>d[i]){ d[i] = 1 + d[j]; poz[i] = j; }

			}
		}
		cout << i << ' ' << poz[i] << '\n';
	}
	answer = -inf;
	int pozitie;
	for (int i = 1; i <= N; ++i)
	{
		g << d[i] << " ";
		if (answer > d[i])
		{
			answer = d[i];
			pozitie = i;
		}
	}

	g << '\n';

	g << answer << '\n';

	while (poz[pozitie] != -2)
	{
		g << v[pozitie] << ' ';
		pozitie = poz[pozitie];
	}

	return 0;
}