Cod sursa(job #3261651)

Utilizator sebyx25sebi m sebyx25 Data 7 decembrie 2024 10:15:16
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int cautBin(int a[], int st, int dr, int x) {
    if(st > dr) return 0;
    if(st == dr) {
        if(a[st] == x) return 1;
        else return 0;
    }
    int mij = (st + dr) / 2;
    if(a[mij] == x) return 1;
    else if(a[mij] < x) return cautBin(a, mij + 1, dr, x);
    else return cautBin(a, st, mij - 1, x);
}
long long int b[100001]={1},v[100001];
long int n,a,ma=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    for(int i=0;i<=n;i++){
        for(int j=0;j<=i;j++){
            if(v[i]>v[j] && b[i]<=b[j]){
                    b[i]=b[i]+1;
                    if(ma<b[i])
                        ma=b[i];
            }
        }
    }
    int vec[100001];
    cout<<ma<<endl;
    int r=ma;
    for(int i=n;i>=1;i--){
        if(ma==b[i]){
            ma--;
            vec[ma+1]=v[i];
        }
    }
    for(int i=1;i<=r;i++){
        cout<<vec[i]<<" ";
    }
}