Pagini recente » Cod sursa (job #1629715) | Cod sursa (job #3286842) | Cod sursa (job #3262531) | Cod sursa (job #460197) | Cod sursa (job #3230139)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n, v[100010], p[100010], best[100010], lg, i, j, lgaux, mx;
int main()
{
in >> n;
for (i = 1; i <= n; i++)
{
in >> v[i];
if (lg == 0)
{
best[++lg] = v[i];
p[i] = 1;
mx = max(mx, 1);
continue;
}
lgaux = upper_bound(best + 1, best + 1 + lg, v[i])-best;
if (v[i] == 15)
int grecu = 1;
while (best[lgaux - 1] == v[i] && lgaux - 1 >= 1)
lgaux--;
best[lgaux] = v[i];
lg = lgaux;
p[i] = lg;
mx = max(mx, lg);
}
out << mx << '\n';
for (i = n; i >= 1; i--)
if (p[i] == mx)
{
p[i] = -1;
mx--;
}
for (i = 1; i <= n; i++)
if (p[i] == -1)
out << v[i] << ' ';
return 0;
}