Cod sursa(job #2104396)

Utilizator 1000Sabin Ilegitim 1000 Data 11 ianuarie 2018 17:03:49
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n, a[100005], m[100005], sol[100005], p, pp, k;
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i ++)
        cin >> a[i];

    for(int i = 1; i < n; i ++)
        if(a[i] == a[i + 1])
        {
            for(int j = i + 1; j <= n; j ++)
                a[j] = a[j + 1];
            i--;
            n--;
        }

    for(int i = 1; i <= n; i ++)
        for(int j = i + 1; j <= n; j ++)
            if(a[j] > a[i])
                m[i]++;

    int maxi = 0;
    for(int i = 1; i <= n; i ++)
        if(m[i] > maxi)
        {
            maxi = m[i];
            p = i;
        }

    sol[++k] = a[p];
    int nr = maxi;
    cout << maxi + 1 << endl;

    while(nr)
    {
        maxi = -1;
        for(int i = p + 1; i <= n; i ++)
            if(m[i] > maxi)
            {
                maxi = m[i];
                pp = i;
            }

        sol[++k] = a[pp];
        p = pp;
        nr--;
    }

    for(int i = 1; i <= k; i ++)
        cout << sol[i] << " ";

    return 0;
}