Pagini recente » Cod sursa (job #1816768) | Cod sursa (job #1214532) | Cod sursa (job #2355588) | Cod sursa (job #894014) | Cod sursa (job #2355163)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int MX = 100005;
int n, lg, v[MX], aux[MX], pos[MX];
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> v[i];
aux[++lg] = v[1];
pos[1] = 1;
for (int i = 2; i <= n; ++i)
{
if (v[i] > aux[lg])
{
aux[++lg] = v[i];
pos[i] = lg;
}
else
{
int p = lower_bound(aux + 1, aux + lg + 1, v[i]) - aux;
aux[p] = v[i];
pos[i] = p;
}
}
fout << lg << "\n";
int ec = lg;
for (int i = n; i >= 1; --i)
if (pos[i] == ec)
{
aux[ec] = v[i];
--ec;
}
for (int i = 1; i <= lg; ++i)
fout << aux[i] << " ";
return 0;
}