Cod sursa(job #3306114)

Utilizator DasapSapunaru Daniel Dasap Data 7 august 2025 17:03:01
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include<fstream>
using namespace std;ifstream fin("scmax.in");ofstream fout("scmax.out");
int n,v[100005],dp[100005],tata[100005],st,dr,m,rsp,i,lg,idx,afis[100005];const int INF=2e9+9;
int main()
{
    fin>>n;v[0]=-INF;v[n+1]=INF;for(i=1;i<=n;i++)fin>>v[i],dp[i]=n+1;
    for(i=1;i<=n;i++){
        st=0;dr=lg;while(st<=dr){
        m=(st+dr)/2;
        if(v[i]>v[dp[m]]){rsp=m;st=m+1;}
        else dr=m-1;
        }lg=max(lg,rsp+1);
        dp[rsp+1]=i;
        tata[i]=dp[rsp];
    }fout<<lg<<'\n';idx=dp[lg];
    for(i=lg;i>0;i--){
        afis[i]=v[idx];
        idx=tata[idx];
    }
    for(i=1;i<=lg;i++)fout<<afis[i]<<' ';
    return 0;
}