Cod sursa(job #2376151)

Utilizator ARobertAntohi Robert ARobert Data 8 martie 2019 13:50:10
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
#define ll long long
#define lf long double
#define cin fin
#define cout fout

using namespace std;

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

vector<int> d;
int n,x,a[100005],b[100005],c[100005],ans;

int main()
{
    ios_base::sync_with_stdio(false);
    cin>>n;
    for (int i=1;i<=n;i++)
        cin>>a[i];
    for (int i=1;i<=n;i++)
    {
        c[i]=lower_bound(b+1, b+ans+1,a[i])-b;
        ans=max(ans,c[i]);
        b[c[i]]=a[i];
    }
    cout<<ans<<'\n';
    for (int i=n;i>=1;i--)
        if (c[i]==ans)
    {
        d.push_back(a[i]);
        ans--;
    }
    while (d.size())
    {
        cout<<d.back()<<" ";
        d.pop_back();
    }
    return 0;
}

//Long long output!!!
//Check constraints!!!