Cod sursa(job #3357956)

Utilizator TestLicenta123Test Test TestLicenta123 Data 13 iunie 2026 22:14:09
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n;
long long v[100005];
int d[100005];
int pr[100005];
int main(){
    f >> n;
    for(int i=1;i<=n;i++) f>>v[i];
    int len = 0;
    d[0] = 0;
    int lo, hi, mid;
    for(int i=1;i<=n;i++){
        lo = 1; hi = len;
        while(lo <= hi){
            mid = (lo+hi)/2;
            if(v[d[mid]] < v[i]) lo = mid+1;
            else hi = mid-1;
        }
        pr[i] = d[lo-1];
        d[lo] = i;
        if(lo > len) len = lo;
    }
    g << len << "\n";
    long long aux[100005];
    int k=0;
    int idx = d[len];
    while(idx!=0){
        aux[k++]=v[idx];
        idx=pr[idx];
    }
    for(int i=k-1;i>=0;i--) g<<aux[i]<<" ";
    return 0;
}