Cod sursa(job #1522403)

Utilizator daianatoaderDaiana Toader daianatoader Data 11 noiembrie 2015 18:01:10
Problema Subsir crescator maximal Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>

int val[100001],l[100001],best[100001];
int max,pmax;
FILE *g;

void citire()
{
    int i,n;
    FILE *f=fopen("scmax.in","r");
    fscanf(f,"%d",&n);
    for(i=0; i<n; i++)
    {
        fscanf(f,"%d",&val[i]);
        l[i]=1;
        best[i]=-1;
    }
    fclose(f);
}
void rezolvare()
{
    int i,j,n;

    for(i=0; i<n; i++)
        for(j=0; j<i; j++)
            if(val[j] < val[i] && (l[j]+1 > l[i]))
            {
                l[i]=l[j]+1;
                best[i]=j;
            }
    pmax=0;
    max=l[0];
    for(i=1; i<n; i++)
        if(l[i]>max)
        {
            max=l[i];
            pmax=i;
        }
    fprintf(g,"%d\n",max);
}

void afisare(int i)
{
    if(i!=-1)
    {
        afisare(best[i]);
        fprintf(g,"%d ",val[i]);
    }
}

int main()
{
    g=fopen("scmax.out","w");
    citire();
    rezolvare();
    afisare(pmax);
    fprintf(g,"\n");
    fclose(g);
    return 0;
}