Cod sursa(job #649803)

Utilizator s8ko14romario s8ko14 Data 16 decembrie 2011 19:40:55
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>
int q[100000];
int cautare(int x,int nr)
{
	int max=2000000000,c=-1;
	for(int i=0;i<nr;i++)
		if(q[i]>=x && q[i]<max)
		{
			c=i;
			max=q[i];
		}
	if(c==-1)
		return nr;
	return c;
}
int main()
{
	int a[100000],p[100000],n,i,j,k,nr=0;
	FILE *f=fopen("scmax.in","rt");
	FILE *g=fopen("scmax.out","wt");
	fscanf(f,"%i",&n);
	for(i=0;i<n;i++)
		fscanf(f,"%i",&a[i]);
	for(i=0;i<n;i++)
	{
		k=cautare(a[i],nr);
		p[i]=k+1;
		if(k==nr)
		{
			q[nr]=a[i];
			nr++;
		}
		else
			q[k]=a[i];
	}
	k=nr;
	j=0;
	for(i=n-1;i>=0;i--)
		if(p[i]==nr)
		{
			nr--;
			q[j++]=i+1;
		}
	fprintf(g,"%i\n",k);
	for(i=k-1;i>=0;i--)
		fprintf(g,"%i ",a[q[i]-1]);
}