Cod sursa(job #2638114)

Utilizator GiosinioGeorge Giosan Giosinio Data 26 iulie 2020 23:33:07
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
/*http://algopedia.ro/wiki/index.php/Psihologia_concursurilor_de_informatic%C4%83/6_Probleme_de_concurs_3*/

#include <iostream>
#include <fstream>
#define DIM 100005

using namespace std;

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

int v[DIM], n, q[DIM], lmax, sol[DIM];
int p[DIM], cp;

void adaugare(int val){
    if(q[lmax] < val){
        q[++lmax] = val;
        p[++cp] = lmax;
    }
    else{
        int i=1;
        while(val > q[i])
            i++;
        q[i] = val;
        p[++cp] = i;
    }
}

void solutie(){
    sol[0] = lmax;
    while(lmax != 0){
        if(p[cp] ==  lmax)
            sol[lmax--] = v[cp];
        cp--;
    }
    for(int i=1; i<=sol[0]; i++)
        g<<sol[i]<<" ";
}

int main()
{
    f>>n;
    f>>v[1];
    q[1] = v[1]; p[1] = lmax = cp = 1;
    for(int i=2; i<=n; i++){
        f>>v[i];
        adaugare(v[i]);
    }
    g<<lmax<<"\n";
    solutie();
}