Cod sursa(job #3242445)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 12 septembrie 2024 11:58:11
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

const int sz = 100000;


int v[sz + 5];
int bst[sz + 5];
int t[sz + 5];
int bk;

int n;

int cb(int val)
{
    int poz = 0;
    int st = 1;
    int dr = bk;
    while(st<=dr)
    {
        int mid = (st+dr)/2;
        if(val > v[bst[mid]])
            st=mid+1,poz=mid;
        else
            dr=mid-1;
    }
    return poz;
}

void afis(int ind)
{
    if(t[ind])
        afis(t[ind]);
    fout<<v[ind]<<' ';
}

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        int r = cb(v[i]);
        bk=max(bk,r+1);
        bst[r+1]=i;
        t[i]=bst[r];
    }
    fout<<bk<<'\n';
    afis(bst[bk]);

}