Cod sursa(job #1426847)

Utilizator alexandru.ghergutAlexandru-Gabriel Ghergut alexandru.ghergut Data 30 aprilie 2015 19:06:18
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;

int main()
{
    int N, i;
    ifstream f("scmax.in");
    f >> N;
    int a[N];
    int best[N], j, pre[N];
    for (i = 0; i < N; i++)
        f >> a[i];
    f.close();
    fill(best, best + N, 0);
    int maxLength;
    for (i = N - 1; i >= 0; i--)
    {
        maxLength = 0;
        for (j = i + 1; j < N; j++)
            if (best[j] > best[i] && a[i] < a[j])
            {
                best[i] = best[j];
                pre[i] = j;
            }
        best[i]++;
    }

    maxLength = 0;
    for (i = 0; i < N; i++)
        maxLength = max(maxLength, best[i]);
    for (j = 0; best[j] != maxLength; j++);

    ofstream g("scmax.out");
    g << maxLength << '\n';
    g << a[j] << " ";
    for (i = 1; i < maxLength; i++)
    {
        g << a[pre[j]] << " ";
        j = pre[j];
    }
    return 0;
}