Cod sursa(job #1242331)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 14 octombrie 2014 12:23:00
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define DIM 100100
using namespace std;

ifstream fin("scm.in");
ofstream fout("scm.out");

int st,dr,mid,v[DIM],n,i,k,t[DIM],d[DIM];
int main()
{
    fin >> n;
    for(i = 1; i<= n; i ++)
        fin >> v[i];
    d[1] = 1;
    k = 1;
    for(i = 2; i <= n; i ++){
        st = 1; dr = k;
        while(st <= dr){
            mid = (st + dr) / 2;
            if(v[i] >= v[ d[mid] ])
                dr = mid - 1;
            else
                st = mid + 1;
        }
        if(st > k){
            k ++;
            d[k] = i;
            t[i] = d[k - 1];
        }
        else {
            if( v[ d[st] ] > v[i] )
                {
                    d[st] = i;
                    t[i] = d[st - 1];
                }
        }
    }

    return 0;
}