Cod sursa(job #2062328)

Utilizator BeniLehelBeni Lehel BeniLehel Data 10 noiembrie 2017 11:14:14
Problema Subsir crescator maximal Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>
#include<stdlib.h>
int main() {

	int n;
	long t[100001] = { 0 }, l[100001] = { 0 };
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		scanf("%d", &t[i]);
	int m = -1;
	for (int i = 1; i < n; i++) {
		for (int j = 0; j < i; j++)
			if (t[j] < t[i] && l[i] < l[j] + 1) {
				l[i] = l[j] + 1;
				if (m < l[i])m = l[i];
			}
	}
	printf("%d\n", m + 1);
	int max = -1;

	for (int i = 0; i < n; i++) {
		int min = l[i], mini = i;
		if (l[i] > max) {

			while (l[i] == l[i + 1]) {
				if (t[i] < min) {
					min = t[i];
					mini = i;
				}
				i++;
			}
		}

		printf("%d ", t[mini]);
		max = l[mini];
	}
	
	return 0;
}