Pagini recente » Cod sursa (job #2811652) | Cod sursa (job #1687705) | Cod sursa (job #71259) | Cod sursa (job #2444385) | Cod sursa (job #2987784)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.in");
int n, dp[100006], a[100006], Lmax, rez[100006];
int prv[100006];
int main()
{
fin >> n;
int maxi = 0, maxpoz, k = 0;
for (int i = 0; i < n; i++)
fin >> a[i];
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
if (a[j] < a[i])
{
maxi = max(maxi, dp[j]);
prv[i] = j;
}
}
dp[i] = maxi + 1;
maxi = 0;
}
for (int i = 0; i < n; i++)
{
if (Lmax < dp[i])
maxpoz = i;
Lmax = max(Lmax, dp[i]);
}
fout << Lmax << '\n';
while (maxpoz != 0)
{
rez[++k] = a[maxpoz];
maxpoz = prv[maxpoz];
}
for (int i = k; i >= 1; i--)
{
fout << rez[i] << ' ';
}
return 0;
}