Cod sursa(job #3261635)

Utilizator MorariuTMorariu MorariuT Data 7 decembrie 2024 09:31:54
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#define MAX 2000000001

using namespace std;

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

int main()
{
    int n; fin >> n;
    vector<int> v(n);
    vector<int> b(n + 1, MAX);
    vector<int> dp(n + 1, 0);

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

    for(int i = 0;i < n;i++)
    {
        vector<int>::iterator it = lower_bound(b.begin(), b.end(), v[i]);
        int pos = it - b.begin();
        b[pos] = v[i];
        dp[i] = pos + 1;
    }

    // for(int i = 0;i <= n;i++) cout << dp[i] << " ";
    // cout << endl;

    fout << *max_element(dp.begin(), dp.end()) << endl;

    for(int i = 0;i < n;i++)
    {
        if(b[i] == MAX) break;

        fout << b[i] << " ";
    }


}