Cod sursa(job #2773137)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 4 septembrie 2021 22:46:28
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin  ("scmax.in");
ofstream fout ("scmax.out");

int m, p[100005], t[100005];
int st, md, dr;
int n, v[100005];

void drum(int poz){
    if(poz != 0){
        drum(t[poz]);
        fout<<v[poz]<<" ";
    }
}

int main (){
    fin>>n;
    for(int i=1; i<=n; i++){
        fin>>v[i];
        st=0;
        dr=m;
        while(st <= dr){
            md=(st+dr)/2;
            if(v[i] > v[p[md]])
                st=md+1;
            else
                dr=md-1;
        }

        if(st > m)
            m=st;
        p[st]=i;
        t[i]=p[st-1];
    }

    fout<<m<<"\n";
    drum(p[m]);
    return 0;
}