Cod sursa(job #3314924)

Utilizator milena.vttLatea Milena milena.vtt Data 11 octombrie 2025 15:49:48
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;
int v[100005], u[100005], t[100005];

int main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    
    vector<int> s;
    int n;
    cin >> n;
    for(int i=0; i<n; i++)
    {
        cin >> v[i];
    }
    
    u[0]=1;
    t[1]=v[0];
    int cnt=1, mx=0;
    
    for(int i=1; i<n; i++)
    {
        for(int j=1; j<=cnt; j++)
        {
            if(t[j]>=v[i]) 
            {
                t[j]=v[i];
                u[i]=j;
                break;
            }
        }
        if(v[i]>t[cnt])
        {
            cnt++;
            t[cnt]=v[i];
            u[i]=cnt;
        }
    }
    
    int maxx=0, poz=0;
    for(int i=0; i<n; i++)
    {
        if(maxx<u[i])
        {
            maxx=u[i];
            poz=i;
        }
    }
    
    cout << maxx << "\n";
    
    int k, i, ult;
    k=maxx;
    i=poz;
    ult=v[i]+1;
    while(k>0)
    {
        
        if(ult>v[i] && u[i] == k)
        {
            s.push_back(v[i]);
            k--;
            ult=v[i];
        }
        i--;
    }
    
    for(int i=0; i<maxx; i++)
    {
        cout << s[maxx-i-1] << " ";
    }

    return 0;
}