En este ejercicio diremos que en la posción de un vector tenemos una rampa cuando los elementos , y están ordenados en orden estrictamente creciente o decreciente.
Por ejemplo, si y tenemos rampas en las posiciones 1, 2 y 4. Cuando no tenemos ninguna posición con rampa.
Dos posiciones con rampa, y con , son potencialmente conflictivas si las correspondientes rampas involucran alguna posición común.
En el ejemplo anterior las rampas de las posiciones 1 y 2 son potencialmente conflictivas, la de la posición 2 es potencialmente conflictiva con la de la posición 4. La rampa de la posición 1 no comparte ninguna posición con la de la posición 4 y por ello las rampas de las posiciones 1 y 4 no son potencialmente conflictivas.
Escribid un programa que indique las posiciones en las que tenemos rampas y el número de pares con correspondientes a pares de posiciones con rampa y potencialmente conflictivas.
Vuestro programa tiene que definir, implementar y usar los siguientes procedimientos:
vector<bool> pos_rampas (const vector <int>& V);
que dado un vector de enteros devuelve un vector, con la misma dimensión, de valores booleanos, donde la posición contiene el valor true si, y solo si, el vector tiene una rampa en la posición .
int pot_conflictivas (const vector <bool>& B);
que dado un vector indicando las posiciones donde hay una rampa determine el número de pares de posiciones , , con rampas y potencialmente conflictivas.
La entrada está formada por una secuencia no vacía de casos. Cada caso está descrito por un entero seguido de los valores enteros del vector correspondiente.
Indicar para cada caso las posiciones en las que tenemos rampas y el número de pares de posiciones con con rampas y potencialmente conflictivas.
Seguid el formato especificado en los ejemplos. Vuestro código tiene que seguir las normas de estilo y contener los comentarios que consideréis oportunos. Se valorará la sencillez y la eficiencia de las soluciones propuestas.
Input
6 0 0 0 0 0 0 7 1 2 3 4 3 2 1
Output
posiciones con rampa: potencialmente conflictivas: 0 --- posiciones con rampa: 0 1 3 4 potencialmente conflictivas: 3 ---
Input
3 7 8 7 3 7 8 9 3 8 7 6
Output
posiciones con rampa: potencialmente conflictivas: 0 --- posiciones con rampa: 0 potencialmente conflictivas: 0 --- posiciones con rampa: 0 potencialmente conflictivas: 0 ---
Input
8 9 8 7 6 5 4 3 2 9 0 1 2 1 0 1 2 1 0
Output
posiciones con rampa: 0 1 2 3 4 5 potencialmente conflictivas: 9 --- posiciones con rampa: 0 2 4 6 potencialmente conflictivas: 3 ---
Input
6 1 2 3 4 5 6 7 100 90 80 90 100 90 80
Output
posiciones con rampa: 0 1 2 3 potencialmente conflictivas: 5 --- posiciones con rampa: 0 2 4 potencialmente conflictivas: 2 ---
Input
6 0 1 0 1 0 1
Output
posiciones con rampa: potencialmente conflictivas: 0 ---
Input
6 0 0 0 0 0 0 7 1 2 3 3 2 1 1 2 7 8 8 9 8 7 6 5 4 3 2 9 0 1 2 1 0 1 2 1 0
Output
posiciones con rampa: potencialmente conflictivas: 0 --- posiciones con rampa: 0 3 potencialmente conflictivas: 0 --- posiciones con rampa: potencialmente conflictivas: 0 --- posiciones con rampa: 0 1 2 3 4 5 potencialmente conflictivas: 9 --- posiciones con rampa: 0 2 4 6 potencialmente conflictivas: 3 ---