Cod sursa(job #3358536)

Utilizator Moisiuc_MateiMoisiuc Matei Moisiuc_Matei Data 17 iunie 2026 14:36:39
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

int a[100005];
int d[100005];
int pos[100005];
int pr[100005];

int main()
{
    ios::sync_with_stdio(false);
    in.tie(nullptr);

    int n;
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>a[i];
    }
    int l=0;
    for(int i=1;i<=n;i++)
    {
        int p=lower_bound(d+1,d+l+1,a[i])-d;
        d[p]=a[i];
        pos[p]=i;
        pr[i]=0;
        if(p>1)
        {
            pr[i]=pos[p-1];
        }
        else
        {
            pr[i]=0;
        }
        if(p>l)
        {
            l=p;
        }
    }
    out<<l<<"\n";
    vector <int> nr;
    int pe=pos[l];
    while(pe)
    {
        nr.push_back(a[pe]);
        pe=pr[pe];
    }
    reverse(nr.begin(),nr.end());
    for(int i:nr)
    {
        out<<i<<" ";
    }
    return 0;
}