Cod sursa(job #547910)
#include <iostream>
#include <fstream>
using namespace std;
long long n , x[100005] , best[100005] , sir[100005] , poz;
int main ()
{
ifstream f ("scmax.in");
ofstream g ("scmax.out");
long long max = 0;
f >> n;
for (long long i = 1 ; i <= n ; ++i)
f >> x[i];
for (long long i = 1 ; i <= n ; ++i)
{
long long maxx = 0;
best[i] = 0;
for (long long j = 1 ; j < i ; ++j)
if (x[j] < x[i] && best[j] > maxx)
{
maxx = best[j];
sir[maxx] = x[j];
}
best[i] = maxx + 1;
sir[maxx + 1] = x[i];
if (best[i] > max)
max = best[i];
}
g << max << "\n";
for (long long i = 1 ; i <= max ; ++i)
g << sir[i] << " ";
g << "\n";
return 0;
}