Cod sursa(job #2331837)

Utilizator Cosmin7Cosmin Cosmin7 Data 29 ianuarie 2019 23:39:46
Problema Subsir 2 Scor 36
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define NMAX 5002
using namespace std;

ifstream f("subsir2.in");
ofstream g("subsir2.out");

int v[NMAX],p[NMAX],q[NMAX],n,lg;

void citire()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++) f>>v[i];
}

int Insert(int k, int st, int dr)
{
    int mij=(st+dr)/2;
    if(st==dr)
    {
        if(st>lg)
            ++lg;
        q[st]=k;
        return st;
    }
    else
    {   if(k!=q[mij])
            if(k<q[mij]) return Insert(k,st,mij);
                else return Insert(k,mij+1,dr);
    }
}

void buildPQ()
{
    int i;
    for(i=1;i<=n;i++)
        p[i]=Insert(v[i],1,lg+1);
}

void afis(int i, int lg)
{
    if(i)
    {
        if(p[i]==lg)
            afis(i-1,lg-1), g<<v[i]<<" ";
        else
            afis(i-1,lg);
    }
}
int main()
{
    citire();
    buildPQ();
    g<<lg<<endl;
    afis(n,lg);
    return 0;
}