Cod sursa(job #303673)

Utilizator nautilusCohal Alexandru nautilus Data 10 aprilie 2009 10:07:25
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream.h>

long a[100005],q[100005],p[100005],sol[100005];
long n,i,j,k,min,poz;

int main()
{

 ifstream fin("scmax.in");
 fin>>n;
 for (i=1; i<=n; i++)
	fin>>a[i];


 k=0;
 for (i=1; i<=n; i++)
	{
	 min=2147483647; poz=0;
	 for (j=1; j<=k; j++)
		if (a[i]<=q[j]) // <= daca sirul este strict crescator, < altfel
		 if (q[j]<min)
			{
			 min=q[j];
			 poz=j;
			}
	 if (poz==0)
		{
		 k++;
		 q[k]=a[i];
		 p[i]=k;
		} else
		{
		 q[poz]=a[i];
		 p[i]=poz;
		}
	}


 j=k;
 for (i=n; i>=1; i--)
	if (p[i]==j)
	 {
		sol[j]=a[i];
		j--;
	 }

 ofstream fout("scmax.out");
 fout<<k<<'\n';
 for (i=1; i<=k; i++)
	fout<<sol[i]<<" ";

 fin.close();
 fout.close();

 return 0;
}