Cod sursa(job #673000)

Utilizator iulian131Moldovan Iulian iulian131 Data 3 februarie 2012 17:28:07
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>

FILE *c = fopen("scmax.in","r"),*s = fopen("scmax.out","w");
int n,a[100003],best[100003],pozitie[100003],max=1,p_start=1;

void citeste()
{
    fscanf(c,"%d",&n);
    for(int i=1;i<=n;i++)
        fscanf(c,"%d",&a[i]);
}

void prelucrare()
{
    best[n] = 0;
    pozitie[n] = 0;
    for(int i=n-1;i>=1;i--)
    {
        best[i] = 0;
        pozitie[i] = 0;
        for(int h=i+1;h<=n;h++)
            if(a[i]<a[h] and best[i]<=best[h])
            {
                best[i] = best[h]+1;
                pozitie[i] = h;
                if(best[i]>max)
                    max = best[i],p_start=i;
            }
    }
}

void afisare()
{
    fprintf(s,"%d\n",n);
    int i=p_start;
    while(i!=0)
    {
        fprintf(s,"%d ",a[i]);
        i = pozitie[i];
    }
}

int main()
{
    citeste();
    prelucrare();
    afisare();
}