Cod sursa(job #1012785)

Utilizator BuseSorinFMI Buse Sorin-Marian BuseSorin Data 19 octombrie 2013 17:20:20
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;
bool gasit = false;
int cautaMin(int V[], int s, int f){
	int min = s;
	for (int i = s+1; i <= f; i++){
		if (V[i] < V[min]){
			min = i;
			gasit = true;
		}
	}
	return min;
}

int main(){
	ifstream f("scmax.in");
	vector<int> v;
	vector<int> aux;
	int V[100000];
	int n = 0;
	f >> n;
	for (int i = 0; i < n; i++){
		f >> V[i];
	}
	int x = 0;
	for (int i = 0; i<n ; i++){
		x = V[i];
		v.push_back(x);
		for (int j = i - 1; j >= 0;j--){
			if (x>V[j]){
				int min = cautaMin(V, i, j);
				if (V[min] < V[j]){
					if (gasit){
						v.erase(v.begin()+i, v.end()-min);
						v.push_back(V[min]);
						j = min;
						x = V[j];
						gasit = false;
					}
				}
				else{
					x = V[j];
					v.push_back(x);
				}
				
			}
		}
		if (aux.size() < v.size()){
			aux.clear();
			aux = v;
		}
		v.clear();
	}
	ofstream o("scmax.out");
	o << aux.size() << endl;
	for (int i = aux.size()-1; i >=0; i--){
		o << aux[i] << " ";
	};
	return 0;
}