Cod sursa(job #3126956)

Utilizator AndreiTitus10Andrei Titus AndreiTitus10 Data 7 mai 2023 02:53:57
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
FILE *fi,*fo;
void afisare(int *A, int *e, int poz)
{
    if (poz!=-1)
    {
        afisare(A, e, e[poz]);
        fprintf(fo,"%d ",A[poz]);
    }
}
int main()
{
    fi=fopen("scmax.in","r");
    fo=fopen("scmax.out","w");
    int n,A[100001],lmax[100001],e[100001];
    fscanf(fi,"%d",&n);
    for (int i=0; i<n; i++)
        fscanf(fi,"%d", &A[i]);
    for (int i=0; i<n; i++)
        lmax[i]=1,e[i]=-1;
    for (int i=0; i<n; i++)
        for (int j=0; j<i; j++)
            if (A[i]>A[j] && 1+lmax[j]>lmax[i])
            {
                lmax[i]=1+lmax[j];
                e[i]=j;
            }
    int poz_max,val_max=0;
    for (int i=0; i<n; i++)
        if (lmax[i]>val_max)
        {
            val_max=lmax[i];
            poz_max=i;
        }
    ///Subsirul maximal ordonat strict crescator are lungime val_max
    fprintf(fo,"%d\n",val_max);
    afisare(A,e,poz_max);

    return 0;
}