Cod sursa(job #3344944)

Utilizator alexkAlexandru Kelemen alexk Data 6 martie 2026 20:50:43
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int nmax=1e5;
int n, v[nmax+5], tt[nmax+5];
vector<int> cap, ans;
bool cmp(int a, int b)
{
    return v[a]<v[b];
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    for(int i=1;i<=n;i++)
    {
        auto it=lower_bound(cap.begin(), cap.end(), i, cmp);
        int poz=it-cap.begin();
        if(poz>0)
            tt[i]=cap[poz-1];

        if(it==cap.end())
            cap.push_back(i);
        else
            *it=i;

    }
    cout<<cap.size()<<'\n';
    for(int i=cap[cap.size()-1];i>0;i=tt[i])
        ans.push_back(v[i]);
    for(int i=ans.size()-1;i>=0;i--)
        cout<<ans[i]<<' ';
    return 0;
}