Cod sursa(job #2260185)

Utilizator TudorCaloianCaloian Tudor-Ioan TudorCaloian Data 14 octombrie 2018 15:44:26
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
#define inf (1<<30)

using namespace std;

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

int n, poz, k, ans[100001], a[100001], p, b[100001];
vector <int> v;
int main()
{

    fin >> n;
    v.push_back(-1);
    for(int i = 1; i <= n; i++)
        v.push_back(inf);
    for(int i = 1; i <= n; i++)
    {

        fin >>b[i];
        poz = lower_bound(v.begin(), v.begin()+k+1, b[i])-v.begin();
        v[poz] = b[i];
        a[i] = poz;
        k = max(poz, k);

    }
    fout << k << '\n';
   for(int i = n; i > 0; i--)
   {
       if(a[i] == k)
        {
            ans[p++] = b[i];
            k--;

        }
   }
    for(int i = p-1; i >= 0; i--)
        fout << ans[i] << " ";

}