A vector V is a vector that is composed of two parts:
v = x1 x2 x3 x4 … xn y1 y2 y3 … ym |
such that x1 … xn is ordered in a strictly decreasing manner and y1 … ym is ordered in a strictly increasing manner. Furthermore, xn > y1. Finally, we have that n,m > 0. That is, neither part is empty.
We need to implement the function
void ordena(const vector<int>& v, int pos, vector<int>& r)
with the following specification:
PRE:
v is a vector V such that ∣ v ∣ ≥ 3,
pos is the position of y1 in v and
∣ v ∣ = ∣ r ∣.
POST:
The vector r contains all the elements of the
vector v and is sorted.
Observation
You only need to send the function we ask for and the actions and functions that you define yourself. The rest will not be taken into account.
The operation sort
from the stl
library cannot be used.
Hint: knowing the position of y1 can help you sort the vector in linear time.
IMPORTANT: You only need to submit the requested function, and possibly other necessary actions and functions. However, you must keep the type definitions and #include
s.
Input
An undetermined number of vectors V with the following format: an integer indicating their size, then the vector V, then the position where y1 is in v and finally a vector r of the same size as v. Every vector V has size greater than or equal to 3.
Output
The vector r is sorted and contains all the elements of v.
ENTRADA 1: 10 20 18 16 2 4 6 8 10 12 14 3 SORTIDA 1: 2 4 6 8 10 12 14 16 18 20 ENTRADA 2: 10 20 2 4 6 8 10 12 14 16 18 1 SORTIDA 2: 2 4 6 8 10 12 14 16 18 20 ENTRADA 3: 10 20 18 16 2 4 6 8 10 12 14 3 SORTIDA 3: 2 4 6 8 10 12 14 16 18 20 ENTRADA 4: 5 14 11 8 2 14 3 SORTIDA 4: 2 8 11 14 14 ENTRADA 5: 10 20 2 4 6 8 10 12 14 16 18 1 SORTIDA 5: 2 4 6 8 10 12 14 16 18 20