Cod sursa(job #2422235)

Utilizator GabyD002Dobrita Gabriel GabyD002 Data 18 mai 2019 00:24:34
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
#define NM 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int lgm,v[NM],t[NM],dp[NM];
int CB(int x)
{   int st=1,dr=lgm,sol=0;
    while(st<=dr)
    {   int mij=(st+dr)/2;
        if(t[mij]<x)
        {   st=mij+1;
            sol=max(sol,mij);
        }
        else dr=mij-1;
    }
    return sol;
}
int main()
{   int n;
    f>>n;
    for(int i=1; i<=n; i++) f>>v[i];
    dp[1]=lgm=1;
    t[1]=v[1];
    for(int i=2; i<=n; i++)
    {   int poz=CB(v[i]);
        if(poz==lgm) lgm++;
        dp[i]=poz+1;
        t[poz+1]=v[i];
    }
    int lm=0;
    for(int i=1; i<=n; i++) lm=max(lm,dp[i]);
    g<<lm<<'\n';
    for(int i=1; i<=lgm; i++) g<<t[i]<<' ';
    return 0;
}