Cod sursa(job #1814268)

Utilizator FeriCsiki Francisc Alexandru Feri Data 23 noiembrie 2016 20:05:45
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,v[100001],x[100001],pred[100001],m;

int caut(int k)
{
    int i,pas=1<<16;
    while(pas!=0)
    {
        if(pas+i<=m && v[x[i+pas]]<k)
        {
            i+=pas;
        }
        pas/=2;
    }
    return i;
}

int main()
{
    int i,j;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    m=0;
    x[++m]=1;
    for(i=2;i<=n;i++)
    {
        j=caut(v[i]);
        pred[i]=x[j];
        x[j+1]=i;
        if(j+1>m)
            m++;
           // out<<x[j+1]<<" ";
    }
    for(i=1;i<=m;i++)
    {
        out<<v[x[i]]<<" ";
    }
    return 0;
}