Cod sursa(job #628519)

Utilizator cat_red20Vasile Ioana cat_red20 Data 1 noiembrie 2011 17:00:06
Problema Subsir crescator maximal Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
#include<limits.h>
int v[1001],sol[1001],n;
FILE *fin,*fout;
void citire()
{
    fin=fopen("scmax.in","r");
    fscanf(fin,"%d",&n);
    for(int i=1;i<=n;i++)
    {
        fscanf(fin,"%d",&v[i]);
    }
}

int main()
{
    int max,maxl=0;
    citire();
    sol[0]=0;
    for(int i=1;i<=n;i++)
    {
        max=0;
        for(int j=i-1;j>=1;j--)
        {
            if(sol[j]>sol[max] && v[j]<v[i])
            {
                max=j;
            }
        }
        sol[i]=sol[max]+1;
        if(sol[i]>sol[maxl])
        {
            maxl=i;
        }
    }

    fout=fopen("scmax.out","w");
    fprintf(fout,"%d\n",sol[maxl]);

    int solutie[1001],i;
    i=maxl;
    solutie[sol[i]]=v[i];
    while(sol[i]!=1)
    {
        for(int j=i-1;j>=1;j--)
        {
            if(sol[j]==sol[i]-1 && v[j]<v[i])
            {
                i=j;
                break;
            }
        }
        solutie[sol[i]]=v[i];
    }
    for(i=1;i<=sol[maxl];i++)
    {
        fprintf(fout,"%d ",solutie[i]);
    }
    return 0;
}