Cod sursa(job #655076)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 31 decembrie 2011 23:32:11
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#define l 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
long long   A[l][2],n,i,v[l],k,s,e,poz,W[l],we;

int bag(int j,int p)
{
        if (v[j]<v[p]) {
                if (A[p][0]==0) A[p][0]=j;
                else bag(j,A[p][0]);
        }
        if (v[j]>=v[p]) {
                if (A[p][1]==0) A[p][1]=j;
                else bag(j,A[p][1]);
        }
}
int caut  (int x,int p)
{
   if (v[p]<v[i]) poz=p;

        if (x<v[p]&&A[p][0]!=0)  caut (x,A[p][0]);

        if (x>v[p]&&A[p][1]!=0)  caut (x,A[p][1]);
}

int main()
{
f>>n;

        for(i=1; i<=n; i++) {
                f>>v[i];
                caut(v[i],0);
                if (v[poz]<v[i]) W[i]=W[poz];
                W[i]++;
                bag(i,0);
                we=max(W[i],we);
        }


g<<we<<'\n';

        f.close();
        g.close();
        return 0;
}