Cod sursa(job #1458796)

Utilizator adi_ispas95FMI - Adrian Ispas adi_ispas95 Data 8 iulie 2015 14:36:50
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	ifstream in("scmax.in");
	ofstream out("scmax.out");

	const int NR_MAX = 100001;

	int nr_numere, nr_numere_max, nr_1, nr_2, nr_total, max_nr = 0, begin, end;
	int begin_max, end_max;
	int numere[NR_MAX];
	int secventa[NR_MAX];

	in >> nr_total;

	for (int i = 0; i < NR_MAX; i++)
		secventa[i] = 1;

	in >> nr_1;
	numere[0] = nr_1;
	begin = 0;

	nr_numere = 1;
	nr_numere_max = 0;

	for (int i = 1; i < nr_total; i++)
	{
		in >> nr_2;
		numere[i] = nr_2;

		if (nr_1 <= nr_2)
		{
			end = i;
			nr_numere++;
		}

		if (nr_numere_max < nr_numere)
		{
			nr_numere_max = nr_numere;
			begin_max = begin;
			end_max = end;
		}

		if (nr_1 > nr_2)
		{
			begin = i;
			nr_numere = 1;
		}

		nr_1 = nr_2;
	}
	
	begin = begin_max;
	end = end_max;

	nr_numere = 0;

	for (int i = begin; i <= end; i++)
	{
		if (secventa[numere[i]] == 1)
		{
			secventa[numere[i]] = 0;
			nr_numere++;
		}
	}

	out << nr_numere << "\n";

	for (int i = 0; i < NR_MAX; i++)
		secventa[i] = 1;

	for (int i = begin; i <= end; i++)
	{
		if (secventa[numere[i]] == 1)
		{
			out << numere[i] << " ";
			secventa[numere[i]] = 0;
		}
	}

	return 0;
}