Cod sursa(job #1557244)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 27 decembrie 2015 03:21:13
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;

const int Nmax = 100005;

int N, v[Nmax];
int pos[Nmax], T[Nmax];

void read()
{
    ifstream f("scmax.in");
    f >> N;
    for(int i = 1; i <= N; i ++)
    {
        f >> v[i];
    }
    f.close();
}

void solve()
{
    pos[N] = 1;
    T[N] = 0;
    for(int i = N-1; i >= 1; i --)
    {
        for(int j = i+1; j <= N; j ++)
        {
            if(v[i] < v[j] && pos[j] >= pos[i])
            {
                pos[i] = pos[j] + 1;
                T[i] = j;
            }
        }
    }

}

void print()
{
    ofstream g("scmax.out");
    int Max = -1, iMax;
    for(int i = 1; i <= N; i ++)
    {
        cout << pos[i] << " ";
        if(pos[i] > Max)
        {
            Max  = pos[i];
            iMax = i;
        }
    }
    g << Max << "\n";
    while(iMax != 0)
    {
        g << v[iMax] << " ";
        iMax = T[iMax];
    }
    g.close();
}

int main()
{
    read();
    solve();
    print();
    return 0;
}