Cod sursa(job #1357472)

Utilizator cristian.enciuCristian Enciu cristian.enciu Data 23 februarie 2015 22:24:11
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

int v[100010];
int l[100010];
int b[100010];
int n, pos, lim;

void search(int &val)
{
	int start = 0, stop = lim;

	pos = (start + stop) / 2;
	while(start < stop) {
		if(v[l[pos]] < val && val <= v[l[pos + 1]]) return;
		else if(v[l[pos + 1]] < val) start = pos + 1;
		else stop = pos - 1;

		pos = (start + stop) / 2;
	}

	pos = lim;
}

int main()
{
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);

	scanf("%d", &n);
	for(int i = 1 ; i <= n ; ++i) {
		scanf("%d", &v[i]);
	}

	lim = b[1] = l[1] = 1;

	for(int i = 2 ; i <= n ; ++i) {
		search(v[i]);
		++pos;
		l[pos] = i;
		b[i] = pos;
		lim = lim < pos ? pos : lim;
	}

	int max = 0;
	for(int i = 1 ; i <= n ; ++i) {
		max = max < b[i] ? b[i] : max;
	}

	printf("%d\n", max);

	return 0;
}