Cod sursa(job #2629961)

Utilizator sebimihMihalache Sebastian sebimih Data 23 iunie 2020 14:50:10
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
#include <algorithm>

using namespace std;

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

void CautareBinara(int NrCautat, vector<int>& dp)
{
	int inc = 0;
	int sf = (int)dp.size() - 1;
	
	while (inc <= sf)
	{
		int mid = (inc + sf) / 2;

		if (dp[mid] < NrCautat)
		{
			inc = mid + 1;
		}
		else
		{
			sf = mid - 1;
		}
	}

	if (inc >= (int) dp.size())
	{
		dp.push_back(NrCautat);
	}
	else
	{
		dp[inc] = NrCautat;
	}
}

int main()
{
	int n;
	fin >> n;

	vector<int> sir(n);
	for (int& x : sir)
	{
		fin >> x;
	}

	vector<int> dp;
	for (int i = 0; i < n; i++)
	{
		CautareBinara(sir[i], dp);
	}

	fout << dp.size() << '\n';
	for (int x : dp)
	{
		fout << x << ' ';
	}
}

/*
	

	

*/