Cod sursa(job #3358856)

Utilizator LicaMihaiIonutLica Mihai- Ionut LicaMihaiIonut Data 20 iunie 2026 22:53:16
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
#include<fstream>
using namespace std;

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

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

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

    int n;
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>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;
        }
    }
    g<<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)
    {
        g<<i<<" ";
    }
    f.close();
    g.close();
    return 0;
}