Cod sursa(job #2528951)

Utilizator OvidRata Ovidiu Ovid Data 22 ianuarie 2020 19:34:55
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");  ofstream fout("scmax.out");

int sc[100010], n, a[100010], l; 
string subsir[100010];




int bs(int x, int left, int right){
    int m=left+right; m/=2;
    if( (sc[m]<x && sc[m+1]>=x) || (sc[m]<x && m>=l) ){return m+1;}
    if(sc[m]>=x){return bs(x, left, m);}
    if(sc[m]<x){return bs(x, m+1, right);}
}







int main() {
fin>>n;


for(int i=0; i<n; i++){
    fin>>a[i];
}

int j;
for(int i=0; i<n; i++){
   j=bs(a[i], 0, l);
   sc[j]=a[i]; subsir[j]=subsir[j-1]+to_string(a[i])+" ";
    l=max(j, l);
}

fout<<l<<"\n"<<subsir[l];


}