Pagini recente » Cod sursa (job #2599885) | Cod sursa (job #1455191) | Cod sursa (job #101555) | Cod sursa (job #2891405) | Cod sursa (job #485352)
Cod sursa(job #485352)
#include <stdio.h>
using namespace std;
struct sir{
int val;
int lg;
int poz;
}a[100];
int n;
void citire(){
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i].val);
}
void maxim(int &lg, int &poz, int i)
{
int x=a[i].val;
for(;i<n;i++)
{
if(a[i].val>x)
{
if(lg<a[i].lg)
{
lg=a[i].lg;
poz=i;
}
}
}
}
void prelucrare()
{
for(int i=n-1;i>=0;i--)
{
int lg=0, poz=-1;
maxim(lg,poz,i);
a[i].lg=1+lg;
a[i].poz=poz;
}
}
void afisare(){
int max=0,poz;
for(int i=0;i<n;i++)
if(a[i].lg>max)
max=a[i].lg,poz=i;
printf("%d\n",max);
while(poz!=-1)
{
printf("%d ",a[poz].val);
poz=a[poz].poz;
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
citire();
prelucrare();
afisare();
return 0;
}