Pagini recente » Cod sursa (job #795227) | Cod sursa (job #2075669) | Cod sursa (job #2510670) | Cod sursa (job #700415) | Cod sursa (job #1893059)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int v[100005], best[100005], poz[100005], fnl[100005];
int n;
void calcul (int i)
{
int m=0, p=0;
for (int j=i-1; j>=0; j--)
if (v[j] < v[i])
if (m < best[j])
{
m = best[j];
p = j;
}
best[i] = m+1;
poz[i] = p;
}
int main()
{
f >> n;
for (int i=1; i<=n; i++)
f >> v[i];
for (int i=1; i<=n; i++)
calcul (i);
int m=0, p=0, mi=0;
for (int i=1; i<=n; i++)
if (m < best[i])
{
m = best[i];
p = poz[i];
mi = i;
}
int j = 1;
g << m << '\n';
fnl[0] = v[mi];
while (p != 0)
{
fnl[j] = v[p];
p = poz[p];
j++;
}
for (int i=j-1; i>=0; i--)
g << fnl[i] << ' ';
return 0;
}