Un vector R és un vector que està compost de dues parts:
v = x1 x2 x3 x4 … xn y1 y2 y3 … ym |
tals que la part x1 … xn i la part y1 … ym estan ordenades de manera estrictament creixent però ym < x1. A més tenim que n,m > 0. És a dir, cap de totes dues parts és buida.
Cal implementar la funció void ordena(vector<int>& v, int pos)
amb la següent especificació:
PRE:
v és un vector R tal que ∣ v ∣ ≥ 3,
i pos és la posició en què es troba y1 a v.
POST:
El vector v està ordenat.
Observació
Només cal que envieu la funció que us demanem i les accions i funcions que vosaltres mateixos definiu. La resta no es tindrà en compte.
No es pot fer servir l’operació sort
de la biblioteca stl
.
Pista: saber la posició en què es troba y1 us pot ajudar a ordenar el vector en temps lineal.
Per altra banda, si feu servir un vector auxiliar per a fer l’ordenació tindreu una penalització de −5 a la correció manual encara que tingueu un semàfor verd.
Entrada
Un nombre indeterminat de vectors R amb el següent format: un enter que n’indica la mida, després el vector R i finalment la posició on es troba y1. Tot vector R té una mida més gran o igual a 3.
Sortida
El vector v ordenat.
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