Cod sursa(job #2572299)

Utilizator DariaIsHereDaria Maria Avramut DariaIsHere Data 5 martie 2020 12:24:45
Problema Subsir crescator maximal Scor 70
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
#include <stdlib.h>
#define N 100000
int n, v[N], l[N], pred[N], l[N];
FILE *in, *out;

void subsir(int p)
{
    if(pred[p]!=-1)
    {
        subsir(pred[p]);
    }
    fprintf(out, "%d ", v[p]);
}

int main()
{
    in=fopen("scmax.in", "r");
    out=fopen("scmax.out", "w");
    int i, j, lmax, imax;
    fscanf(in, "%d", &n);
    for(i=0; i<n; i++)
    {
        fscanf(in, "%d", v + i);
        pred[i]=-1;
    }
    imax=0;
    for(i=0; i<n; i++)
    {
        lmax=0;
        for(j=0; j<i; j++)
        {
            if(v[j]<v[i])
            {
                if(l[j]>lmax)
                {
                    lmax=l[j];
                    pred[i]=j;
                }
            }

        }
        l[i]=1+lmax;
        if(l[i]>l[imax])
        {
            imax=i;
        }
    }
    fprintf(out, "%d\n", l[imax]);
    subsir(imax);
    return 0;
}