Cod sursa(job #3344082)

Utilizator robertcosacCosac Robert-Mihai robertcosac Data 1 martie 2026 12:50:35
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100009], sclm[100009], prev1[100009];
void afis (int x)
{
    if (prev1[x]==0)
    {
        g << v[x]<< ' ';
        return;
    }
    afis (prev1[x]);
    g << v[x] <<' ';
}
signed main ()
{
    int n;
    f >> n;
    for (int i=1; i<=n; i++)
        f >> v[i];
    int cnt=0;
    sclm[++cnt]=1;
    for (int i=2; i<=n; i++)
    {
        int st=1, dr=cnt, retine=cnt+1;
        while (st<=dr)
        {
            int mij=(st+dr)/2;
            if (v[sclm[mij]]>=v[i])
            {
                retine=mij;
                dr=mij-1;
            }
            else st=mij+1;
        }
        sclm[retine]=i;
        prev1[i]=sclm[retine-1];
        if (retine>cnt)
            cnt++;
    }
    g << cnt << '\n';
    afis (sclm[cnt]);
}