Cod sursa(job #1462394)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 17 iulie 2015 22:09:33
Problema Subsir crescator maximal Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

fstream in("scmax.in", ios::in);
fstream out("scmax.out", ios::out);

#define nmax 100007

int a[nmax],best[nmax]={},pred[nmax]={},i,j,k=1,kpoz=-1,n,maxim=1,maximpoz=-1;

void drum(int);

int main()
{
	
	in>>n;
	for(i=0;i<n;i++)
		in>>a[i];
	
	best[0]= 1;
	pred[0]= -1;

	for(i=1;i<n;i++)
		if(a[i] > a[i-1])
		{
			best[i]= best[i-1]+ 1;
			k++;
			pred[i]= kpoz;
			kpoz= i;
			
			if(k > maxim)
			{
				maxim= k;
				maximpoz= kpoz;
			}
		}
		else if(a[i] == a[i-1])
			best[i]= best[i-1];
		else
		{
			best[i]= 1;
			k= 1;
			kpoz= i;
			pred[i]= -1;
		}
		/*
		for(i=0;i<n;i++)
			cout<< best[i]<< " ";
		cout<< "\n";
		for(i=0;i<n;i++)
			cout<< pred[i]<< " ";
		*/
		out<< maxim<< "\n";

		kpoz= maximpoz;
		drum(kpoz);
		/*
		while(kpoz != -1)
		{
			out<< a[kpoz]<< " ";
			kpoz= pred[kpoz];
		}
		*/



        
    in.close();
    out.close();

	return 0;
}

void drum(int i)
{
	if(i != -1)
		drum(pred[i]);
	if(i != -1)
		out<<a[i]<<" ";
}