Cod sursa(job #1430033)

Utilizator cruceru_vlad_ionut_321CACruceru Vlad - Ionut 321CA cruceru_vlad_ionut_321CA Data 7 mai 2015 19:30:52
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int vec[100000];
int lungimi[100000];
int tati[100000];

int main()
{
    FILE *f = fopen("scmax.in", "r");
    FILE *g = fopen("scmax.out", "w");
    //ifstream f("scmax.in");
    //ofstream g("scmax.out");
    int n;
    //f >> n;
    fscanf(f, "%d\n", &n);
    for(int i = 0; i < n; i++)
        //f >> vec[i];
        fscanf(f, "%d ", &vec[i]);
    int lung = 0;
    int idx = -1;
    for(int i = n - 1; i >= 0; i--)
    {
        lungimi[i] = 1;
        for(int j = i + 1; j < n; j++)
            if((vec[i] < vec[j]) && (lungimi[i] < lungimi[j] + 1))
            {
                lungimi[i] = lungimi[j] + 1;
                tati[i] = j;
            }
        if(lung < lungimi[i])
        {
            lung = lungimi[i];
            idx = i;
        }
    }

    fprintf(g, "%d\n", lung);
//    g << lung <<endl;
    do
    {
 //       g << vec[idx] << " ";
        fprintf(g, "%d ", vec[idx]);
        idx = tati[idx];
    }   
    while(idx != 0);
    //g << '\n';
    fprintf(g, "\n");
    fclose(f);
    fclose(g);
//    f.close();
  //  g.close();

    return 0;
}