Cod sursa(job #2259661)

Utilizator TudorCaloianCaloian Tudor-Ioan TudorCaloian Data 13 octombrie 2018 16:36:40
Problema Subsir crescator maximal Scor 45
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
#define inf (1<<30)

using namespace std;

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

int n, v[100001], poz, k = 1;
vector <int> capete;


int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> v[i];
    capete.push_back(0);
    for(int i = 1; i <= n; i++)
        capete.push_back(inf);
    for(int i = 1; i <= n; i++)
    {
        poz = upper_bound(capete.begin(), capete.begin()+k+1, v[i]-1) - capete.begin();
        capete[poz] = v[i];
        k = max(poz,k);

    }
    fout << k << "\n";
    for(int i = 1; i <= k; i++)
        fout << capete[i] << " ";
    return 0;
}