Cod sursa(job #1702118)

Utilizator Moise_AndreiMoise Andrei Moise_Andrei Data 14 mai 2016 15:45:48
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[100005];
int best[100005];
int pre[100005];
vector <int> h;
int main()
{
    int mx=-1,n,poz=1;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=1;i<=n;i++)
    {
        best[i] = 1; /// doar elementul a[i]
        for(int j=1;j<i;j++)
        {
            if(v[j]<v[i] && best[i] < best[j] + 1) {
                best[i] = best[j] + 1;
                if(mx<best[i])
                {
                    poz=i;
                    mx=best[i];
                }
                pre[i] = j;
            }
        }
    }
    out<<mx<<'\n';
    for(int i=poz;i>0;i=pre[i])
    {
        h.push_back(v[i]);
    }
    for(int i=h.size()-1;i>=0;i--)
        out<<h[i]<<" ";
    return 0;
}