Pagini recente » Cod sursa (job #2515726) | Cod sursa (job #1074811) | Cod sursa (job #2862861) | Cod sursa (job #80511) | Cod sursa (job #930273)
Cod sursa(job #930273)
#include <cstdio>
#define N 100000
using namespace std;
int n, a[N], best_length[N], predecesor[N];
int p;
void citire()
{
scanf("%d ", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d ", &a[i]);
best_length[i] = 1;
predecesor[i] = -1;
}
}
void dinamica()
{
for(int i = n-1; i >=1; i--)
for(int j = i+1; j <= n; j++)
if(best_length[i] <= best_length[j] && a[i] < a[j])
{
best_length[i] = best_length[j] + 1;
predecesor[i] = j;
}
}
void maxim()
{
int max = -1;
for(int i = 1; i <= n; i++)
if(best_length[i] > max)
{
max = best_length[i];
p = i;
}
printf("%d\n", max);
}
void afisare()
{
maxim();
for(int i = p; i != -1; )
{
printf("%d ", a[i]);
i = predecesor[i];
}
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
citire();
dinamica();
afisare();
return 0;
}