Cod sursa(job #1375474)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 5 martie 2015 13:20:17
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
#define DIM 100010
using namespace std;
int n,m,i,v[DIM],a[DIM],b[DIM],p,u,nr;
void afisare(int x){
	if(x){
		afisare(a[x]);
		printf("%d ", v[x]);
	}
}
int main(){
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	scanf("%d", &n);
	for(i=1; i<=n; i++)
		scanf("%d", &v[i]);
	b[1]=1;
	nr=1;
	for(i=2; i<=n; i++){
		p=1;
		u=nr;         
		while(p<=u){             
			m=p+(u-p)/2;            
			if(v[i]>v[ b[m] ])       
				p=m+1;            
			else              
				u=m-1;        
		}    
		if(p>nr)  
			nr++;
		b[p]=i;         
		a[i]=b[p-1];
	}    
	printf("%d\n", nr); 
	afisare(b[nr]); 
	return 0;
}