Cod sursa(job #1680297)

Utilizator Player1Player 1 Player1 Data 8 aprilie 2016 17:17:15
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include <stdio.h>
#include <vector>
#define NMIN 2000000003

using namespace std;

int main(){
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out","w", stdout);
	long n, i, j, maxElem, minElem, indexMax, biggestMin, indexBig, x;
	scanf("%ld ", &n);
	vector<vector<long>> solutions;
	scanf("%ld ", &x);
	vector<long> temp(1,x);
	solutions.push_back(temp);
	for(i = 1; i < n; i++){
		scanf("%ld ", &x);
		maxElem = 0;
		minElem = NMIN;
		biggestMin = 0;
		for(j = 0; j < solutions.size(); j++){
			if(solutions[j][solutions[j].size() - 1] > maxElem){
				maxElem = solutions[j][solutions[j].size() - 1];
				indexMax = j;
			}
			if(solutions[j][solutions[j].size() - 1] < minElem)
				minElem = solutions[j][solutions[j].size() - 1];
			if((solutions[j][solutions[j].size() - 1] > biggestMin) && (solutions[j][solutions[j].size() - 1] < x)){
				biggestMin = solutions[j][solutions[j].size() - 1];
				indexBig = j;
			}
		}
		if(x > maxElem)
			solutions[indexMax].push_back(nums[i]);
		if(x < minElem){
			temp[0] = nums[i];
			solutions.push_back(temp);
		}
		if((x > minElem) && (x < maxElem) && (biggestMin !=0)){
			solutions[indexBig].push_back(x);
			int sz = solution[indexBig].size();
			for(j = 0; j < solutions.size(); j++)
				if((solutions[j].size() == sz) && (j != indexBig))
					erase solutions[j];
		}
	}
	for(i = 0; i < solutions[solutions.size() - 1].size(); i++)
		printf("%ld ", solutions[solutions.size() - 1][i]);
	
	return 0;
}