Rampas X09467


Statement
 

pdf   zip

html

En este ejercicio diremos que en la posción i de un vector v tenemos una rampa cuando los elementos v[i], v[i+1] y v[i+2] están ordenados en orden estrictamente creciente o decreciente.

Por ejemplo, si n=7 y v=[4,5,4,3,−4,2,4] tenemos rampas en las posiciones 1, 2 y 4. Cuando v=[0,0,0,0,0,0] no tenemos ninguna posición con rampa.

Dos posiciones con rampa, i y j con i<j, 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 (i,j) con i<j 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 i contiene el valor true si, y solo si, el vector V tiene una rampa en la posición i.


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 (i,j), i < j, con rampas y potencialmente conflictivas.

Entrada La entrada está formada por una secuencia no vacía de casos. Cada caso está descrito por un entero n≥ 3 seguido de los n valores enteros del vector correspondiente.

Salida

Indicar para cada caso las posiciones en las que tenemos rampas y el número de pares de posiciones (i,j) con i<j 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.

Public test cases
  • 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
    ---
    
  • Information
    Author
    Professorat de PRO1
    Language
    Spanish
    Translator
    Maria Serna
    Original language
    Catalan
    Other languages
    Catalan English
    Official solutions
    Unknown.
    User solutions
    C++