Cod sursa(job #2280023)

Utilizator mihnea_toaderToader Mihnea mihnea_toader Data 10 noiembrie 2018 11:04:04
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
//cautare binara fututa
#include <iostream>
#include <fstream>

using namespace std;

int e[100000], p[100000], k=0, l=0;

int cautbin (int x)
{
    int lsi=1,lfi=k,m;
    while (lsi<lfi)
    {
        m=(lsi+lfi)/2;
        if (e[m] < x)
            lsi=m+1;
        else
            lfi=m;
    }
    m=(lsi+lfi)/2;
    if (e[m] < x)
        m++;
    return m;
}

int main()
{
    int n,x;
    ifstream fin ("scmax.in");
    ofstream fout ("scmax.out");
    fin>>n;
    for (int i=0;i<n;i++)
    {
        fin>>x;
        if (x>e[k])
        {
            e[++k]=x;
            p[++l]=k;
        }
        else if (x!=e[k])
        {
            int poz=cautbin(x);
            e[poz]=x;
            p[++l]=poz;
        }
    }
    int maxi=0;
    for (int i=1;i<=l;i++)
        if (p[i]>maxi)
            maxi=p[i];
    fout<<maxi<<"\n";
    for (int i=1;i<=k;i++)
        fout<<e[i]<<" ";
    return 0;
}