Cod sursa(job #1686619)

Utilizator ApostolIlieDanielApostol Daniel ApostolIlieDaniel Data 12 aprilie 2016 12:37:03
Problema Subsir crescator maximal Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>
int v[100001],lung[100001];
int main()
{
    FILE *fin,*fout;
    int n,i,j,t,max;
    fin=fopen("scmax.in","r");
    fout=fopen("scmax.out","w");
    fscanf(fin,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d",&v[i]);
    lung[n]=1;
    max=0;
    for(i=n-1;i>0;i--)
    {
        lung[i]=0;
        for(j=i+1;j<=n;j++)
            if(lung[j]>lung[i]&&v[i]<v[j])
               lung[i]=lung[j];
        lung[i]++;
        if(max<lung[i])
            max=lung[i];
    }
    i=1;
    t=0;
    fprintf(fout,"%d\n",max);
    do
    {
        while(lung[i]!=max||v[t]>v[i])
            i++;
        fprintf(fout,"%d ",v[i]);
        t=i;
        max--;
    }while(max);
    fclose(fin);
    fclose(fout);
    return 0;
}