Pagini recente » Cod sursa (job #207661) | Cod sursa (job #1290404) | Cod sursa (job #1595960) | Cod sursa (job #2234686) | Cod sursa (job #858729)
Cod sursa(job #858729)
#include <cstdio>
#define N 100005
int n, sir[N], length[N], urm[N];
void citire()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d ", &sir[i]);
length[i] = 1;
urm[i] = -1;
}
}
void lungime()
{
for(int i=n;i>=1;i--)
{
for(int j=i+1;j<=n;j++)
if(length[i] < 1+length[j] && sir[j] > sir[i])
{
length[i] = length[j] + 1;
urm[i] = j;
}
}
}
int maxim_length()
{
int max = -1;
int p = 0;
for(int i=1;i<=n;i++)
if(max < length[i])
{
max = length[i];
p = i;
}
return p;
}
void afisare()
{
int ok = 0;
int p = maxim_length();
printf("%d\n", length[p]);
for(int i=p;i!=-1;)
{
printf("%d ",sir[i]);
i = urm[i];
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
citire();
lungime();
afisare();
return 0;
}