Cod sursa(job #2180745)

Utilizator BurlacuMateiBurlacu Matei BurlacuMatei Data 21 martie 2018 09:16:12
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
#define MAX 101000

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

int v[MAX], poz[MAX], a[MAX];
long long int n, dr, st, mijloc, sol;
int lg;

int main()
{int i;

    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];

    v[1]=a[1];
    poz[1]=1;
    lg=1;

    for(i=2;i<=n;i++){
        sol=0;
        st=0;
        dr=lg+1;
        while(dr-st>1){
            mijloc=(dr+st)/2;
            if(v[mijloc]>=a[i]) {sol=mijloc; dr=mijloc;}
            else st=mijloc;
        }

        if(sol){
            v[sol]=a[i];
            poz[sol]=i;
        }
        else{
            lg++;
            v[lg]=a[i];
            poz[lg]=i;
        }
    }

   /* for(i=n;i>=1;i--)
        if(poz[i]==lg){
            s[lg]=v[]
    }*/

    fout<<lg<<'\n';
    for(i=1;i<=lg;i++)
        fout<<v[i]<<' ';

    return 0;
}