Cod sursa(job #3186243)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 22 decembrie 2023 12:15:35
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

const int Nmax = 100005;

int n;
int a[Nmax];
int dp[Nmax], s[Nmax], p[Nmax];

int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    dp[1] = 1;
    s[1] = a[1];
    p[1] = 1;
    int len = 1;
    for(int i = 2; i <= n; i++)
    {
        if(a[i] > s[len])
        {
            dp[i] = len+1;
            s[++len] = a[i];
            p[len] = i;
        }
        else
        {
            int ind = lower_bound(s+1, s+1+len, a[i])-s;
            s[ind] = a[i];
            p[ind] = i;
        }
    }
    fout << len << "\n";
    for(int i = 1; i <= len; i++)
        fout << s[i] << " ";
    return 0;
}