Pagini recente » Cod sursa (job #1721111) | Cod sursa (job #1835421) | Cod sursa (job #1554298) | Cod sursa (job #393718) | Cod sursa (job #3194058)
#include <fstream>
using namespace std;
const int N = 1e5;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[N], l_max[N];
void refac_subsir(int poz, int val, int lung)
{
if (lung == 1)
{
return;
}
if (v[poz] < val && l_max[poz] == lung - 1)
{
refac_subsir(poz - 1, v[poz], l_max[poz]);
out << v[poz] << " ";
}
else
{
refac_subsir(poz - 1, val, lung);
}
}
int main()
{
int n, ultim = 0;
in >> n;
for (int i = 0; i < n; i++)
{
in >> v[i];
int lung = 0;
for (int j = 0; j < i; j++)
{
if (v[j] < v[i])
{
lung = max(lung, l_max[j]);
}
}
l_max[i] = 1 + lung;
if (l_max[i] > l_max[ultim])
{
ultim = i;
}
}
out << l_max[ultim] << "\n";
refac_subsir(ultim, v[ultim] + 1, l_max[ultim] + 1);
in.close();
out.close();
return 0;
}