Cod sursa(job #2151281)

Utilizator aturcsaTurcsa Alexandru aturcsa Data 4 martie 2018 12:23:15
Problema Subsir crescator maximal Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int A[100001],n,m;
vector <int> V[100001];
int cauta(int val)
{
    int st=0,dr=m+1;
    while((dr-st)>1)
    {
        int mid=(st+dr)/2;
        if(V[mid][mid-1]<=val)
            st=mid;
        else dr=mid;
    }
    return dr;
}
int main()
{
    fi>>n;
    for(int i=1; i<=n; i++)
    {
        fi>>A[i];
        int poz=cauta(A[i]);
        V[poz]=V[poz-1];
        V[poz].push_back(A[i]);
        if(poz==m+1)
            m++;

    }
    fo<<m<<"\n";
    for(int j=0; j<m; j++)
            fo<<V[m][j]<<" ";
    return 0;
}