Cod sursa(job #333452)

Utilizator bog29Antohi Bogdan bog29 Data 22 iulie 2009 20:47:15
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#define dmax 100003
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
unsigned int n,sir[dmax],din[dmax],ult[dmax],st,mx;
void getsir(int k,int i)
{	if(i<=din[st])
	{	getsir(ult[k],i+1);
		out<<sir[k]<<" ";
	}	
}
int main()
{	int i,j;
	in>>n;
	for(i=1;i<=n;i++)
		in>>sir[i];
	in.close();
	for(i=1;i<=n;i++)
	{	if(i==1)
			din[i]=1;
		else
		{	din[i]=1;
			for(j=1;j<i;j++)
			{	if(sir[i]>sir[j])
				{	if(din[j]+1>din[i])ult[i]=j;
					din[i]=max(din[i],din[j]+1);
					if(din[i]>mx)
					{	st=i;
						mx=din[i];
					}	
				}	
			}
		}
	}
	/*for(i=1;i<=n;i++)
		out<<sir[i]<<" ";
	out<<'\n';
	for(i=1;i<=n;i++)
		out<<din[i]<<" ";
	out<<'\n';
	for(i=1;i<=n;i++)
		out<<ult[i]<<" ";
	out<<'\n'<<st;
	out<<'\n'<<'\n';*/
	out<<din[st]<<'\n';
	getsir(st,1);	
	out.close();
	return 0;
}