Cod sursa(job #1998401)

Utilizator ARobertAntohi Robert ARobert Data 7 iulie 2017 18:19:05
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <cmath>

using namespace std;

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

int main()
{
    int n, v[100001], lg[100001], low, high, mid, i;
    lg[0]=0;
    fin>>n;
    for (i=1;i<=n;i++)
    fin>>v[i];
    for (i=1;i<=n;i++)
        {
                if (v[i]>lg[lg[0]])
            {
                lg[++lg[0]]=v[i];
            }
            else
            {
                low=1;
                high=lg[0];
                while (high-low>1)
                {
                mid=ceil((low+high)/2);
                if (v[i]<lg[mid])
                high=mid;
                else low=mid;
                }
                if (v[i]<lg[low])
                lg[low]=v[i];
            }
        }
    fout<<lg[0]<<'\n';
    for (i=1;i<=lg[0];i++)
        fout<<lg[i]<<" ";
    return 0;
}