Cod sursa(job #1889040)

Utilizator bobotheslayerBogdan Zaharia bobotheslayer Data 22 februarie 2017 15:22:08
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    FILE *intrare,*iesire;
    int n,i,j,v[100000],pred[100000],a[100000],d[100000],r=0,c=0,m=0;
    intrare=fopen("scmax.in","r");
    iesire=fopen("scmax.out","w");
    fscanf(intrare,"%d",&n);
    for (i=0; i<=n-1; ++i)
    {
        fscanf(intrare,"%d",&v[i]);
    }

    for (i=0; i<=n-1; ++i)
    {
        d[i]=1;
        pred[i]=-1;
        for (j=0; j<=i-1; ++j)
        {
            if (v[i]>v[j] && d[j]+1>d[i])
            {
                d[i]=d[j]+1;
                pred[i]=j;
            }
        }
    }

    for (i=1; i<=n-1; ++i)
    {
        if (d[i]>d[r])
            r=i;
    }

    fprintf(iesire,"%d\n",d[r]);
    m=d[r];
    c=r;
    while (c!=-1)
    {
        a[m-1]=v[c];
        --m;
        c=pred[c];
    }

    for (i=0; i<d[r]; ++i)
    {
        fprintf(iesire,"%d ",a[i]);
    }
}