Pagini recente » Cod sursa (job #1759288) | Cod sursa (job #2025952) | Cod sursa (job #2578133) | Cod sursa (job #459435) | Cod sursa (job #2815446)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int N_MAX = 1e5;
const int INF = 2e9 + 5;
int n, k, scm_end;
int v[N_MAX + 5], p[N_MAX + 5];
vector<int> L(N_MAX + 5, 0), L_id(N_MAX + 5, 0);
void print_scm(int i)
{
if(p[i] == -1)
{
out << v[i] << ' ';
return;
}
print_scm(p[i]);
out << v[i] << ' ';
}
int main()
{
in >> n;
for(int i = 0; i < n; i++)
in >> v[i];
for(int i = 0; i < n; i++)
{
int pos = lower_bound(L.begin(), L.begin() + k, v[i]) - L.begin();
L[pos] = v[i];
L_id[pos] = i;
p[i] = (pos > 0 ? L_id[pos - 1] : -1);
if(pos == k)
{
k++;
scm_end = i;
}
}
out << k << '\n';
print_scm(scm_end);
out << '\n';
return 0;
}