Cod sursa(job #3324207)

Utilizator BidonTurtitBezdedan Eric BidonTurtit Data 21 noiembrie 2025 17:43:14
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stack>
using namespace std;

stack <int> S;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

bool cmp(int a,int b)
{
    return a<=b;
}

int n,a[100001],best[100001],s[100001],mx=0;
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        int pos=upper_bound(s+1,s+mx+1,a[i],cmp)-s;
        s[pos]=a[i];
        best[i]=pos;
        if(pos>mx)
            mx=pos;
    }
    fout<<mx<<"\n";
    for(int i=n;i>0;i--)
    {
        if(best[i]==mx)
        {
            mx--;
            S.push(a[i]);
        }
    }
    while(!S.empty())
    {
        fout<<S.top()<<" ";
        S.pop();
    }
    return 0;
}