Cod sursa(job #2062382)

Utilizator BeniLehelBeni Lehel BeniLehel Data 10 noiembrie 2017 12:13:47
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 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-1; i++) {
		int min[2] = { t[i],i };
		
		while(l[i]==l[i+1]){
			if (t[i+1] < min[0]) {
				min[0] = t[i+1];
				min[1] = i+1;
			}
			i++;
		}

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