Cod sursa(job #2759139)

Utilizator CaptnBananaPetcu Tudor CaptnBanana Data 15 iunie 2021 17:48:07
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

const int N = 1e5 + 1;
int n, v[N], dp[N], k, num[N], ans[N], aux;

int main(){
    f >> n;
    for(int i = 0; i < n; i++)
        f >> v[i];

    f.close();
    for(int i = 0; i < n; i++){
        if(v[i] > num[k]){
            num[++k] = v[i];
            dp[i] = k;
        }else{
            for(int j = 1; j <= k; j++){
                if(v[i] <= num[j]){
                    num[j] = v[i];
                    dp[i] = j;
                    j = k;
                }
            }
        }
    }

    g << k << '\n';
    aux = k;
    for(int i = n; i >= 0; i--){
        if(dp[i] == aux)
            ans[aux--] = v[i];
    }

    for(int i = 1; i <= k; i++)
        g << ans[i] << ' ';

    g.close();
}