Cod sursa(job #641304)

Utilizator s8ko14romario s8ko14 Data 27 noiembrie 2011 20:02:19
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>
int q[100];
int elem(int x,int l)
{
	int poz=0,min=32000;
	for(int i=1;i<=l;i++)
		if(q[i]>=x && q[i]<min)
		{
			min=q[i];
			poz=i;
		}
	if(poz!=0)
		return poz;
	return l+1;
}
int main()
{
	FILE *f=fopen("scmax.in","rt");
	FILE *g=fopen("scmax.out","wt");
	int v[100],p[100],n,l=0,i,c;
	fscanf(f,"%i",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%i",&v[i]);
	for(i=1;i<=n;i++)
	{
		if(l==0)
		{
			q[1]=v[1];
			l++;
			p[1]=1;
		}
		else
		{
			c=elem(v[i],l);
			if(c==l+1)
				l++;
			q[c]=v[i];
			p[i]=c;
		}
	}
	c=l;
	for(i=n;i>=0;i--)
	{
		if(l>0)
			if(p[i]==l)
			{
				q[l]=v[i];
				l--;
			}
	}
	fprintf(g,"%i\n",c);
	for(i=1;i<=c;i++)
		fprintf(g,"%i ",q[i]);
}