Cod sursa(job #2909109)

Utilizator MihaiSimedreaSimedrea Mihai MihaiSimedrea Data 9 iunie 2022 13:52:17
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <iterator>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

void readData(int &N, vector<int> &numbers)
{
	fin >> N;
	auto aux = 0;

	for(auto i = 0; i < N; i++)
	{
		fin >> aux;
		numbers.push_back(aux);
	}
}

set<int> findLen(vector<int> &numbers)
{
	set<int> s;

	for(auto number = numbers.cbegin(); number < numbers.cend(); number++)
	{
		if(s.find(*number) != s.end())
			continue;

		auto currentElem = s.insert(*number);

		set<int>::iterator it;
		if(currentElem.second)
			it = currentElem.first;

		if(++it != s.end())
			s.erase(it);
	}

	return s;
}

int main()
{
	int N = 0;
	vector<int> numbers;

	readData(N, numbers);

	set<int> SET = findLen(numbers);
	
	fout << SET.size() << endl;
	for(auto itr : SET)
		fout << itr << " ";

	fin.close();
	fout.close();
	return 0;
}