Cod sursa(job #2881749)

Utilizator vladutzu_finutzuVlad Cacenschi vladutzu_finutzu Data 30 martie 2022 19:49:26
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
vector<int> v, idx, L;
int n;
int main()
{
    cin>>n;
    v.resize(n);
    idx.resize(n);

    for(int i=0; i<n; i++)
        cin>>v[i];

    L.resize(n + 1);

    for(int i=0; i<=n; i++)
        L[i] = INT_MAX;

    for(int i=0; i<n; i++)
    {
        int l = 1, r = i + 1, poz = 0;

        while(l <= r)
        {
            int mid = (l + r) / 2;
            if(L[mid] == INT_MAX)
                r = mid - 1;
            else if(L[mid] < v[i]){
                if(mid > poz)
                    poz = mid;
                l = mid + 1;
            }
            else r = mid - 1;
        }
        L[poz + 1] = min(L[poz + 1], v[i]);
    }
    int sol = 0;

    for(int i = L.size() - 1; i>=0; i--)
        if(L[i] != INT_MAX)
        {
            sol = i;
            break;
        }

    cout<<sol<<'\n';

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

    return 0;
}