Pagini recente » Cod sursa (job #1875126) | Cod sursa (job #366293) | Cod sursa (job #615415) | Cod sursa (job #144503) | Cod sursa (job #902959)
Cod sursa(job #902959)
#include <cstdio>
using namespace std;
int n, i, a[100069], l[100069], ne[100069];
int main()
{
freopen ("scmax.in", "r", stdin);
freopen ("scmax.out", "w", stdout);\
scanf ("%d", &n);
for (i=1; i<=n; i++)
scanf ("%d ", &a[i]);
l[n]=1;
int k, poz, maxi;
for (k=n-1; k>0; k--)
{
maxi=0;
poz=n+1;
for (i=k+1; i<=n; i++)
{
if (a[k]<a[i] && l[i]>maxi)
{
maxi=l[i];
poz=i;
}
}
if (poz!=n+1)
{
l[k]=maxi+1;
ne[k]=poz;
}
else
l[k]=1;
}
maxi=0;
for (i=1; i<=n; i++)
if (maxi<l[i])
{
maxi=l[i];
poz=i;
}
printf ("%d\n", maxi);
while (ne[poz])
{
printf ("%d ", a[poz]);
poz=ne[poz];
}
printf ("%d", a[poz]);
return 0;
}