Cod sursa(job #413713)

Utilizator dodgerblueBogdan P. dodgerblue Data 8 martie 2010 23:49:23
Problema Subsir crescator maximal Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	int n,m,i,j,max,maxglobal;
	int *v,*best,*s;	
	
	FILE *f = fopen("scmax.in","r");
	FILE *g = fopen("scmax.out","w");
	
	fscanf(f,"%d\n",&n);
	v = (int*)malloc(n*sizeof(int));
	best = (int*)malloc(n*sizeof(int));
	for(i=0;i<n;i++)
		fscanf(f,"%d ",&v[i]);
	
	maxglobal = 1;
	
	
	for(i = 0; i<n ; i++){
		best[i] = 1;
		max = 0;
		for(j=0;j<i;j++){
			if(v[j]<v[i] && best[j]>max)
				max = best[j];
			
		}
		
		best[i] = best[i] + max;
		
		if(best[i] > maxglobal)
			maxglobal = best[i];
	}	
	
	m = maxglobal;
	s = (int*)malloc(m*sizeof(int));
	
	for(i = n-1; i>=0; i--)
		if(best[i] == maxglobal){
			s[maxglobal - 1] = v[i];
			maxglobal--;
		}
		
	fprintf(g,"%d\n",m);
	for(i=0;i<m;i++)
		fprintf(g,"%d ",s[i]);
	fprintf(g,"\n");
	
	fclose(f);
	fclose(g);
	free(v);
	free(best);
	free(s);
	
	return 0;
	
}