Cod sursa(job #1379449)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 6 martie 2015 17:56:53
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>
using std::vector;

int main(){
	std::ifstream fin("scmax.in");
	std::ofstream fout("scmax.out");

	unsigned n; fin>>n;
	vector<unsigned> a(n);

	for(unsigned i=0;i<n;++i) fin>>a[i];

	vector<unsigned> best(n,1);
	vector<unsigned> prev(n);
	for(unsigned i=1;i<n;++i)
		for(int j=i-1;j>=0;--j)
			if(a[j]<a[i]&&best[j]+1>best[i]){
				best[i]=best[j]+1;
				prev[i]=j;
			}


	unsigned max=0,maxi;
	for(unsigned i=0;i<n;++i) if(best[i]>max){ max=best[i]; maxi=i;}
	fout<<max<<'\n';
	vector<unsigned> values(max);
	for(unsigned i=0;i<max;++i){
		values[i]=a[maxi];
		maxi=prev[maxi];
	}
	for(int i=max-1;i>=0;--i) fout<<values[i]<<' ';
	fout<<'\n';
}