Cod sursa(job #2011430)

Utilizator infomaxInfomax infomax Data 16 august 2017 09:35:16
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, lmx[100003], prv[100003], v[100003], maxx, k, m;
stack<int> st;

int main()
{
    F >> n;
    for(int i = 1;  i<= n; ++ i) F >> v[i];
    for(int i = 1; i <= n; ++ i)
    {
        if(!lmx[i]) lmx[i] = 1;
        for(int j = i+1; j <= n; ++ j)
            if(v[i] < v[j])
            {
                if(lmx[j] < lmx[i]+1) lmx[j] = lmx[i] + 1, prv[j] = i;
            }
    }
    for(int i = 1; i <= n; ++ i) maxx < lmx[i] ? maxx = lmx[i], m = i : k++;
    G << maxx <<'\n';
    for(int i = m; i > 0; i = prv[i])
        st.push(v[i]);
    while(!st.empty()) G << st.top() << " ", st.pop();
    return 0;
}