Cod sursa(job #507835)

Utilizator yopetrucciPetrucci Cezar yopetrucci Data 6 decembrie 2010 22:02:37
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
FILE * f=freopen("scmax.in","r",stdin);
FILE * g=freopen("scmax.out","w",stdout);
int M[100001],subs[100001],vect[100001];
int n;

void subsir()
	{
	subs[n]=1;int i=n-1,j;
	while(i>=1)
		{
		for(j=i+1;j<=n;j++)
			if(M[i]<M[j])
				{
				subs[i]=subs[j]+1;
				j=n+2;
				}
		if(j==n+1)
			subs[i]=1;
		i--;	
		}
		
	}
void procesare()
	{
	int max=subs[1],poz=1;int i;int k=1;
	for(i=2;i<=n;i++)
		if(max<subs[i])
			{
			max=subs[i];
			poz=i;
			}
	vect[k]=M[poz];
	i=poz+1;
	while(max!=1)
		{
		while(max-1!=subs[i] || M[poz]>=M[i])
			i++;
		k++;vect[k]=M[i];poz=i;max--;
		}
	
			
	for(i=1;i<=k;i++)
		printf("%d ",vect[i]);
	}
int main()
	{
	int i; scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&M[i]);
	subsir();
	procesare();	
		
	return 1;	
	}