Pagini recente » Cod sursa (job #1624857) | Cod sursa (job #972069) | Cod sursa (job #47426) | Cod sursa (job #2355470) | Cod sursa (job #2466192)
//#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]);
}