Cod sursa(job #2466192)

Utilizator dream3rDavid Pop dream3r Data 1 octombrie 2019 18:29:21
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
ifstream f("scmax.in");
ofstream o("scmax.out");
using ll = long long int;
int v[100005];
int dublu[100005];
int poz[100005];
map<int, int>e;
int n, k;


void insert(int a, int pos)
{
	int p = upper_bound(dublu, dublu + k, a-1) - dublu;
	dublu[p] = a;
	poz[p] = pos;
	if (p == k)
	{
		++k;
	}
	if (p)
	{
		e[pos] = poz[p - 1];
	}

}

void print(int len, int prev)
{
	if (len > 0)
	{
		print(len - 1, e[prev]);
		o << v[prev] << " ";
	}
}

int main()
{
	//system("color 2");
	f >> n;

	for (size_t i = 0; i < n; i++)
	{
		f >> v[i];
		insert(v[i], i);

	}

	o << k << "\n";

	print(k, poz[k - 1]);
}