La descripción completa del problema se encuentra aquí. El problema consiste en que dado un número N de listas de números enteros positivos de tamaño 10 decir si, la lista se encuentra ordenada o no.
Entrada
La primer linea contien un número entero positivo N, donde 0 < N < 20, que indica el número de casos a procesar. Luego siguen N lineas, una por cada caso.
Cada linea contiene 10 enteros positivos menores a 100.
Salida
La salida inicia con la frase Lumberjacks: seguida de una linea por caso con la respuesta. La palabra Ordered si la lista está ordenada o la palabra Unordered si la lista está desordenada.
#include <iostream>
using namespace std;
int main() {
int N;
int beards[10];
cin >> N;
cout << "Lumberjacks:\n";
while(N--) {
for (int i = 0; i < 10; i++) {
cin >> beards[i];
}
// La lista esta ordenada ascendentemente
// hasta que se demuestre lo contrario
bool sorted_asc = true;
// La lista esta ordenada descendentemente
// hasta que se demuestre lo contrario
bool sorted_desc = true;
// Recorremos la lista iniciando desde 1
// y comparamos la posición actual con la anterior
for (int i = 1; i < 10; i++) {
if (beards[i-1] > beards[i]){
// Si la posición anterior es mayor a la actual
// entonces no están ordenados ascendentemente
sorted_asc = false;
} else if (beards[i-1] < beards[i]){
// Si la posición anterior es menor que la actual
// entonces no estan ordenados descendentemente
sorted_desc = false;
}
}
// Si al terminar de comparar cada par de elementos consecutivos
// alguna variable quedó en True indica que toda la lista estaba
// ordenada ya sea ascendentemente o descendentemente
// o que todos los elementos son iguales (por tanto también está ordenada)
if (sorted_desc || sorted_asc) {
cout << "Ordered\n";
} else {
cout << "Unordered\n";
}
}
return 0;
}