Pagini recente » Cod sursa (job #3286399) | Cod sursa (job #563342) | Cod sursa (job #2956415) | Cod sursa (job #2174333) | Cod sursa (job #877375)
Cod sursa(job #877375)
#include <cstdio>
#define NMAX 100001
using namespace std;
int n;
int a[NMAX];
int p[NMAX];
int l[NMAX];
int pmax;
void read()
{
freopen ("scmax.in", "r", stdin);
scanf("%d\n", &n);
for(int i = 1; i <= n; ++ i)
{
scanf("%d ", &a[i]);
p[i] = -1;
l[i] = 1;
}
}
int solve()
{
int lgmax = 0;
for(int i = n - 1; i >= 1; -- i)
for(int j = i + 1; j <= n; ++ j)
if(a[j] > a[i] && l[i] < l[j] + 1)
{
l[i] = l[j] + 1;
p[i] = j;
if(l[i] > lgmax)
{
lgmax = l[i];
pmax = i;
}
}
return lgmax;
}
void write()
{
while(p[pmax])
{
printf("%d ", a[pmax]);
pmax = p[pmax];
if(p[pmax] == -1)
{
printf("%d ", a[pmax]);
break;
}
}
printf("\n");
}
int main()
{
read();
freopen("scmax.out", "w", stdout);
printf("%d\n", solve());
write();
return 0;
}