Hola Gente
Estoy intentando resolver este problema de Spoj:
http://www.spoj.com/problems/TCX/
Sin embargo no me da que esta bien, no se si estoy planteandolo del modo incorrecto. Basicamente ingresas un numero y dicho numero va a determinar cuantos otros numeros podes ingresar.
Luego compara siempre el numero anterior con el siguiente y asi sucesivamente.
#include <iostream>
using namespace std;
/*Se ingresa un número natural N y a continuación una secuencia de N números naturales. Informar:
“T” si la secuencia está totalmente ordenada en forma ascendente;
“C” si está casi ordenada, esto es el último número no cumple orden;
“X” en otro caso: si está desordenada, si N o algún elemento de la secuencia no es natural, etc.
*/
int main(int argc, char *argv[]) {
int primernumero,ultimonumero,contadorT,cantnumeros,otrosnumeros;
//iniciamos el contador que verifica si se cumple secuencia C o secuencia X
contadorT=0;
//variable que toma la cantidad de numeros que el usuario ingresara
cin>>cantnumeros;
//variable para comparar el 1er valor
cin>>primernumero;
do {
//contador que al llegar a cero pedira el ultimo numero para comparar.
cantnumeros--;
//comparamos a partir del 2do numero y si es decreciente lo dejamos asentado
cin>>otrosnumeros;
if (otrosnumeros<primernumero){
contadorT++;}
} while (cantnumeros!=0);
//comparamos el ultimo numero
cin>>ultimonumero;
//si el ultimo numero es mayor al anterior y el contador nunca subio, muestra T
if (ultimonumero>otrosnumeros && contadorT==0){
cout<<"T";
//si el ultimo numero es menor al anterior pero el contador sigue en cero significa que muestra C
} else if (ultimonumero<otrosnumeros && contadorT==0){
cout<<"C";
//si el contador subio 1 vez aunque sea significa que los valores antes del ultimo numero alguno fue menor al anterior
} else if (contadorT!=1){
cout<<"X"; }
return 0;
}
Muchas gracias por su ayuda