Cod sursa(job #1268563)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 21 noiembrie 2014 01:26:26
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
FILE *fin, *fout;
struct tip
{
       int a;
       int b;
} *dyn;
long int n, max, *arr;
void afisare(int a)
{
     if(dyn[a].b != -1) afisare(dyn[a].b);
     fprintf(fout, "%d ", arr[a]);
}
int main()
{
    fin = fopen("scmax.in", "r");
    fout = fopen("scmax.out", "w");
    int n, max;
    fscanf(fin, "%d", &n);
    arr = new long int[n];
    dyn = new tip[n];
    for(int i =0; i< n; i++) fscanf(fin, "%ld", &arr[i]);
    dyn[0].a = 1;dyn[0].b = -1;
    for(int i =1; i< n; i++)
    {
            dyn[i].a = 1;
            dyn[i].b = -1;
            for(int j = i-1; j>=0; j--)
            {
                    if(arr[i] <= arr[j]) continue;
                    if(dyn[j].a +1 > dyn[i].a)
                    {
                                dyn[i].a = dyn[j].a + 1;
                                dyn[i].b = j;
                    }
            }
    }
    fprintf(fout, "%d\n", dyn[n-1].a);
    afisare(n-1);
    fclose(fin);
    fclose(fout);
    return 0;
}