Cod sursa(job #1189267)

Utilizator MarianMMorosac George Marian MarianM Data 22 mai 2014 00:38:21
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#define _CRT_SECURE_NO_DEPRECATE

#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
#include <deque>
#include <set>
#include <map>
#include <list>
#include <string>
#include <iterator>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <tuple>
using namespace std;

#define NMAX 100001

int n, a[NMAX], p[NMAX];
int i, j, x, lgMax, last = -1;

int main(){
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);

	scanf("%d", &n);
	for (i = 0; i < n; i++) scanf("%d", &a[i]);

	for (i = n - 1; i >= 0; i--){
		p[i] = 1;
		for (j = i; j < n; j++){
			if (a[j] > a[i]){
				p[i] = p[j] + 1;
				break;
			}
		}
	}

	for (i = 0; i < n; i++)	{
		if (p[i] > lgMax){
			lgMax = p[i];
		}
	}
	printf("%d\n", lgMax);

	for (i = 0; i < n; i++){
		if (p[i] == lgMax && a[i] > last){
			last = a[i];
			lgMax--;
			printf("%d ", a[i]);
		}
	}

	return 0;
}