Cod sursa(job #1994432)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 24 iunie 2017 22:42:37
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <binders.h>
#define MAXN 100005

using namespace std;

ifstream in("scmax.in");
ofstream out ("scmax.out");

int N,v[MAXN],i,j;


void cit(){
    in>>N;
    for(i = 0 ; i < N; i++ ){
        in>>v[i];
    }
}
void rezolvare(){
    int D[N];// vector in care punem lungimea celei mai lungi subsecevente pana la i
    for(i = 0 ; i < N; i ++){
        D[i] = 1; //un singur element se considera ca o subsecventa
    }
    for(i = 1; i < N; i ++){
        for(j = 0 ; j < i; j ++){
            if(v[i] > v[j] && D[i] < D[j] + 1){
                D[i] = D[j] + 1;
            }
        }
    }
    out<<D[N-1]<<endl;
    vector<pair<int,int> >numere;
    for(i = 0 ; i < N; i ++){
        numere.push_back(make_pair(D[i],v[i]));
    }



    vector<int>sec;
    for(i = 0 ; i < N; i ++){
        sec.push_back(numere[i].first);
        cout<<sec[i]<<" ";
    }
    int counter = 1;
    for(i = 0 ; i < N; i ++){
        if(sec[i] == counter){
            out<<numere[i].second<<" ";
            counter ++;
        }
    }

}

int main()
{
    cit();
    rezolvare();
    return 0;
}