Cod sursa(job #2180756)

Utilizator BurlacuMateiBurlacu Matei BurlacuMatei Data 21 martie 2018 09:29:51
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 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], s[MAX];
long long int n, dr, st, mijloc, sol;
int lg, lg1;

int main()
{int i, j;

    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[i]=sol;
        }
        else{
            lg++;
            v[lg]=a[i];
            poz[i]=lg;
        }
    }

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

    fout<<lg<<'\n';

    lg1=lg;
    for(i=n, j=1;i>=1; i--){
        if(poz[i]==lg1) {s[j]=a[i]; j++; lg1--;}
    }

    sort(s+1, s+lg+1);
    for(i=1;i<=lg;i++)
        fout<<s[i]<<' ';

    return 0;
}