Un vector R es un vector que está compuesto de dos partes:
v = x1 x2 x3 x4 … xn y1 y2 y3 … ym |
tales que la parte x1 … xn y la parte y1 … ym están ordenadas de forma estrictamente creciente pero ym < x1. Además tenemos n,m > 0. Es decir, ninguna de las dos partes está vacía.
Es necesario implementar la función void ordena(vector<int>& v, int pos)
con la siguiente especificación:
PRE:
v es un vector R como ∣ v ∣ ≥ 3,
y pos es la posición en la que se encuentra y1 en v.
POST:
El vector v está ordenado.
Observación
Sólo tiene que enviar la función que le pedimos y las acciones y funciones que vosotros mismos defina. El resto no se tendrá en cuenta.
No se puede utilizar la operación sort
de la biblioteca stl
.
Pista: saber la posición en la que se encuentra y1 le puede ayudar a ordenar el vector en tiempo lineal.
Por otra parte, si utiliza un vector auxiliar para realizar la ordenación tendrá una penalización de −5 en la corrección manual aunque tenga un semáforo verde.
Entrada
Un número indeterminado de vectores R con el siguiente formato: un entero que indica su tamaño, después el vector R y finalmente la posición en la que se encuentra y1. Todo vector R tiene un tamaño mayor o igual a 3.
Salida
El vector v ordenado.
ENTRADA 1: 15 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 5 SORTIDA 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTRADA 2: 15 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 13 SORTIDA 2: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTRADA 3: 15 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 SORTIDA 3: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTRADA 4: 5 12 15 4 7 8 2 SORTIDA 4: 4 7 8 12 15