Vector U Z30313


Statement
 

pdf   zip   main.cc

Un vector U es un vector de enteros que tiene tres partes: una bajada, un valle y una subida. La bajada b1bkb_1 \dots b_k es un subvector tal que todos los elementos están en orden estrictamente decreciente. El valle v1vmv_1 \dots v_m es un subvector en el que todos los elementos son iguales. La subida p1pnp_1 \dots p_n es un subvector tal que todos sus valores están en orden estrictamente creciente.

Además, se cumplen estas dos condiciones:

  1. k1k \geq 1, m3m \geq 3 y n1n \geq 1. Dicho de otro modo: tanto la bajada como la subida tienen al menos un elemento, mientras que el valle tiene, al menos, tres.

  2. bk>v1b_k > v_1 y vm<p1v_m < p_1.

Por ejemplo, el vector V = [5 4 3 2 1 1 1 6 7 8 9 10] es un vector U:

$\underbrace{\verb|5 4 3 2|}$ $\underbrace{\verb|1 1 1|}$ $\underbrace{\verb|6 7 8 9 10|}$
bajada valle subida

El codo U es la posición de un vector U donde se encuentra vmv_m, es decir, el último elemento del valle. Por ejemplo, para el vector V = [5 4 3 2 1 1 1 6 7 8 9 10] la posición del codo U es 6, ya que es la posición donde se encuentra el último elemento del valle.

Debes hacer la función colzeU, que devuelve la posición del codo U de un vector U.

/* PRE:  v es un vector U.
   POST: devuelve la posición del codo U de v.
*/

int colzeU(const vector<int>& v);

Observación

Solo debes enviar un fichero que contenga la función requerida, con los include necesarios y las funciones auxiliares que hayas declarado (si las hay), y nada más.

Propón una solución utilizando búsqueda dicotómica para este ejercicio. Cualquier otro tipo de solución implica la anulación total de todo el ejercicio, independientemente del veredicto del juez.

Entrada

Un vector U de enteros.

Salida

La posición del codo U.

Public test cases
  • Input

    12
    5 4 3 2 1 1 1 6 7 8 9 10
    
    10
    3 1 -1 -5 -5 -5 -5 -4 -3 10
    
    5
    4 3 3 3 4
    
    10
    4 3 3 3 4 5 6 7 8 9
    

    Output

    6
    6
    3
    3
    
  • Information
    Author
    PRO1
    Language
    Spanish
    Translator
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++