Cod sursa(job #2807573)

Utilizator Catalin2002Catalin Craciun Catalin2002 Data 23 noiembrie 2021 22:28:03
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;

struct data{

int val;

int len;
int last;

};

data v[100000];

stack<int> stiva;

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


int main()
{
    int n;

    fin>>n;

    for(int i=0;i<n;i++){

        fin>>v[i].val;
        v[i].len = 1;
        v[i].last = -1;

        for(int j=0;j<i;j++)
            if(v[j].val < v[i].val && v[j].len >= v[i].len){
                v[i].len = v[j].len + 1;
                v[i].last = j;
            }

    }

    int maxval =1, maxi =0;

    for(int i=0 ;i<n;i++)
        if(v[i].len > maxval){
            maxval = v[i].len;
            maxi = i;
        }

    fout<<maxval<<"\n";

    while(maxi!= -1){

        stiva.push(v[maxi].val);
        maxi = v[maxi].last;
    }

    while(!stiva.empty()){
        fout<<stiva.top()<<" ";
        stiva.pop();
    }




    return 0;
}