Cod sursa(job #2077375)

Utilizator NannyiMaslinca Alecsandru Mihai Nannyi Data 27 noiembrie 2017 22:45:21
Problema Subsir crescator maximal Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 100005
ifstream f("scmax.in");
ofstream g("scmax.out");

int n,v[nmax],t[nmax],d[nmax],k;

int main()
{
    f>>n;
    for (int i=1;i<=n;++i)
        f>>v[i];
    for (int i=1;i<=n;++i)
    {
        int prim=1;
        int ultim=k;
        while (prim<=ultim)
        {
            int mid=(prim+ultim)/2;
            if (v[i]<d[mid])
                ultim=mid-1;
            else if (v[i]>d[mid])
                prim=mid+1;
            else
                break;
        }
        int poz=prim;
        if (poz>k)
            k=poz;
        d[poz]=v[i];
        t[poz]=i;
    }
    g<<k<<'\n';
    for (int i=1;i<=k;++i)
        g<<v[t[i]]<<' ';
    return 0;
}