Cod sursa(job #2917215)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 3 august 2022 20:24:35
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")

using namespace std;

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

const int MAX_N = 100005;
int n, v[MAX_N];
int m, minn[MAX_N], parent[MAX_N];
int st, md, dr, save;

void traceback(int index){
    if(index != 0){
        traceback(parent[index]);
        fout<<v[index]<<" ";
    }
}

int main (){
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr), fout.tie(nullptr);

    fin>>n;
    for(int i=1; i<=n; i++){
        fin>>v[i];

        st = 0;
        dr = m;
        while(st <= dr){
            md = st + ((dr-st)>>1);
            if(v[minn[md]] < v[i]){
                save = md;
                st = md + 1;
            }else{
                dr = md - 1;
            }
        }

        minn[save+1] = i;
        parent[i] = minn[save];
        if(save == m)
            m++;
    }

    fout<<m<<"\n";
    traceback(minn[m]);
    return 0;
}