Pagini recente » Cod sursa (job #2304808) | Cod sursa (job #363078) | Rating Andrei Tirpescu (Andrei_Tirpescu) | Cod sursa (job #637239) | Cod sursa (job #1012785)
#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;
}