Pagini recente » Cod sursa (job #2744536) | Cod sursa (job #2393124) | Cod sursa (job #264783) | Cod sursa (job #1474529) | Cod sursa (job #2943800)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, dp[100005], before[100005], numbers[100005];
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> numbers[i];
for (int i = 1; i <= n; i++)
{
dp[i] = 1;
before[i] = 0;
for (int j = 1; j < i; j++)
if (numbers[j] < numbers[i] && dp[j] + 1 > dp[i])
{
dp[i] = dp[j] + 1;
before[i] = j;
}
}
int max = 0, poz = 0;
for (int i = 1; i <= n; i++)
if (dp[i] > max)
{
max = dp[i];
poz = i;
}
fout << max << "\n";
int sol[max];
for (int i = max - 1; i >= 0; i--)
{
sol[i] = numbers[poz];
poz = before[poz];
}
for (int i = 0; i < max; i++)
fout << sol[i] << " ";
return 0;
}