Cod sursa(job #1861078)

Utilizator minut1Baies Cosmin minut1 Data 28 ianuarie 2017 16:07:11
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

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

int lung[100004],pred[100004],i,j,lmax,pmax,v[100004],n,m;

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

int main()
{
    in >> n;
    for(i=1; i<=n; i++)
        in >> v[i];
    for(i=1; i<=n; i++)
    {
        lmax = 0;
        for(j=1; j<=n; j++)
        {
            if(v[j] < v[i])
            {
                if(lung[j] > lmax)
                {
                    lmax=lung[j];
                    pred[i]=j;
                }
            }
        }
        lung[i] = 1 + lmax;
    }
    pmax = 1;
    for(i=2; i<=n; i++)
    {
        if(lung[i] > lung[pmax])
        {
            pmax = i;
        }
    }
    for(i =1; i<=n; i++)
    {
        j = caut(v[i]);
        vmin[j+1] = v[i];
        pmin[j+1] = i;
        if(j == m)
            m++;
        pred[i] = pmin[j];
    }
    return 0;
}