Cod sursa(job #2964281)

Utilizator SerbanCaroleSerban Carole SerbanCarole Data 12 ianuarie 2023 19:15:00
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <algorithm>
using namespace std;

const int MAX = 1e5 + 2;

const int inf = 2e9 + 1;

ifstream cin("scmax.in");
ofstream cout("scmax.out");

int dp[MAX] , pre[MAX], a , n;

// dp[i] = numarul minim cu care s-ar termina o secventa de lungime i;

void afisare( int ind ){

    if(ind == 0){

        return;
    }

    afisare(ind-1);

    cout << dp[ind] << ' ';

}

int main()
{

    cin >> n;

    dp[0] = 0;

    int maxim = 0;

    for(int i = 1 ; i <= n ; i++){

        dp[i] = inf;
    }

    for(int i = 1 ; i <= n ; i++){

        cin >> a;

        int x = upper_bound(dp,dp+1+n,a) - dp;

        if( a < dp[x] && a > dp[x-1]){

            dp[x] = a;

            maxim = max(maxim,x);
        }
    }

    cout << maxim << '\n';

    afisare(maxim);

    return 0;
}