Pagini recente » Cod sursa (job #2934911) | Cod sursa (job #27504) | Cod sursa (job #1643370) | Cod sursa (job #1317481) | Cod sursa (job #1012933)
#include <iostream>
#include <vector>
using namespace std;
#define NMax 100001
int main()
{
int n, i, j; cin >> n;
int v[NMax];
for (i = 1; i <= n; ++i)
cin >> v[i];
int sol[NMax];
sol[n] = 1;
int maxim = 0;
for(i = n - 1; i >= 1; --i)
{
sol[i] = 1;
for(j = i + 1;j <= n; ++j)
if (v[i] < v[j] && sol[i] < sol[j] + 1)
{
sol[i] = sol[j] + 1;
if (maxim < sol[i])
maxim = sol[i];
}
}
int suma = 0; vector<int> rezultat;
for (i = 1; i <= n; ++i)
{
if (sol[i] == maxim)
{
++suma;
rezultat.push_back(v[i]);
--maxim;
}
}
cout << suma << "\n";
for(vector<int>::const_iterator it = rezultat.begin(); it != rezultat.end(); ++it)
cout << *it << " ";
return 0;
}