Cod sursa(job #2713927)

Utilizator ClaudiuALLupau Claudiu ClaudiuAL Data 28 februarie 2021 22:02:45
Problema Subsir crescator maximal Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include<bits/stdc++.h>

using namespace std;

int a[100001], v[100001], p[100001], n, lmv;

int cautare_binara(int nr)
{
    int st=1, dr=lmv;

    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(nr<=v[mij])
            dr=mij-1;
        else
            st=mij+1;
    }
    return st;
}

void caut()
{
    for(int i=1;i<=n;i++)
    {
        p[i]=cautare_binara(a[i]);
        v[p[i]]=a[i];
        if(p[i]>lmv)
            lmv++;
    }
}
void afis(int ind, int nr)
{
    for(int i=ind;i>0;i--)
    {
        if(p[i]==nr)
        {
            afis(i-1,nr-1);
            cout<<a[i]<< " ";
            break;
        }
    }
}

int main()
{

    ifstream cin("scmax.in");
    ofstream cout("scmax.out");

    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    caut();
    cout<<lmv<< "\n";
    afis(n,lmv);
    return 0;
}