Cod sursa(job #955695)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 1 iunie 2013 12:45:56
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
//subsir crescator maximal
#include <fstream>
#define Nmax 100010
#define MAX 2000000009
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

int n,L,PozMax,v[Nmax],l[Nmax],Min[Nmax],d[Nmax],p[Nmax];

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

void SCMAX()
{
    for(int i=1;i<=n;i++)
    {
        Min[i]=MAX;
        l[i]=L;
        while (Min[l[i]]>=v[i] && l[i]>0) l[i]--;
        d[i]=p[l[i]++];
        if(l[i]>L) L=l[i],PozMax=i;
        if(v[i]<Min[l[i]]) Min[l[i]]=v[i],p[l[i]]=i;
    }
 }

void afisare(int x)
{
    if (x!=0)
    {
        afisare(d[x]);
        g<<v[x]<<" ";
    }
}


int main()
{
    init();
    SCMAX();
    g<<L<<'\n';
    afisare(PozMax);
    g<<'\n';
    f.close();g.close();
    return 0;
}