Cod sursa(job #3307094)

Utilizator mihai.25Calin Mihai mihai.25 Data 17 august 2025 14:28:37
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

#include <vector>

#include <algorithm>

using namespace std;

ifstream fin ("scmax.in");

ofstream fout ("scmax.out");

int main () {

	int n;

	fin >> n;

	vector <int> v (n);

	for (int i = 0; i < n; ++i)
		fin >> v[i];
	
	vector <int> D, poz (n);

	for (int i = 0; i < n; ++i) {

		auto it = lower_bound(D.begin(), D.end(), v[i]);

		if (it == D.end()) {

			D.push_back(v[i]);

			poz[i] = D.size() - 1;
		}
		else {

			*it = v[i];

			poz[i] = it - D.begin();
		}
	}

	vector <int> rez;

	int j = n - 1;

	for (int i = D.size() - 1; i >= 0; --i) {

		while (poz[j] != i)
			j--;
		
		rez.push_back(v[j]);
	}

	fout << rez.size() << '\n';

	for (int i = rez.size() - 1; i >= 0; --i)
		fout << rez[i] << ' ';
	
	return 0;
}