Pagini recente » Cod sursa (job #1195441) | Cod sursa (job #3175442) | Cod sursa (job #1181400) | Cod sursa (job #2490073) | Cod sursa (job #3037994)
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
struct pos {
int len;
int ind;
int val;
};
int n;
int maxlen = 1;
int v[100005];
int d[1000005];
int poz[1000005];
int start;
int main()
{
int len = 0;
f >> n;
for (int i = 1; i <= n; i++)
{
f >> v[i];
}
d[n] = 1;
poz[n] = -1;
for (int i = n - 1; i >= 1; i--)
{
d[i] = 1;
poz[i] = -1;
for (int j = i + 1; j <= n; j++)
{
if (v[j] > v[i] && d[i] < d[j] + 1)
{
d[i] = d[j] + 1;
poz[i] = j;
if (maxlen < d[i])
{
maxlen = max(maxlen, d[i]);
start = i;
}
}
}
}
g << maxlen << '\n';
int i = start;
while (i != -1)
{
g << v[i] << ' ';
i = poz[i];
}
}