Cod sursa(job #2062983)

Utilizator gorneanu.andreiFMI Gorneanu Andrei gorneanu.andrei Data 10 noiembrie 2017 23:35:45
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
using namespace std;

int main(){

    fstream f("fisier.in",ios::in);
    fstream g("scmax.out",ios::out);

    int n;
    f >> n;
    int best[n], last[n], v[n];
    best[0] = 1;
    last[0] = -1;

    int i = 0, j, poz, maxim, rezultat_lungime = 1, rezultat_poz = 0;

    while(f >> v[i])
        ++i;

    for(i = 1;i < n; ++i){
        maxim = -1;
        for(j = 0;j < i; ++j)
            if(maxim < best[j] && v[j] < v[i]){
                maxim = best[j];
                poz = j;
            }

        if(maxim == -1){
            best[i] = 1;
            last[i] = -1;
        }else{
            best[i] = maxim + 1;
            last[i] = poz;
            if(best[i] > rezultat_lungime){
                rezultat_lungime = best[i];
                rezultat_poz = i;
            }
        }
    }

    int counter = 0;
    while(rezultat_poz != -1){
        best[counter] = v[rezultat_poz];
        ++counter;
        rezultat_poz = last[rezultat_poz];
    }

    g << rezultat_lungime << "\n";

    for(int i = rezultat_lungime - 1;i >= 0; --i)
        g << best[i] << " ";
}