Cod sursa(job #485352)

Utilizator Sm3USmeu Rares Sm3U Data 18 septembrie 2010 10:24:54
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#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;
}