Un vector V és un vector que està compost de dues parts:
v = x1 x2 x3 x4 … xn y1 y2 y3 … ym |
tals que x1 … xn està ordenat de manera escrictament decreixent i y1 … ym està ordenat de manera escrictament creixent. A més, xn > y1. Finalment tenim que n,m > 0. És a dir, cap de totes dues parts és buida.
Cal implementar la funció
void ordena(const vector<int>& v, int pos, vector<int>& r)
amb la següent especificació:
PRE:
v és un vector V tal que ∣ v ∣ ≥ 3,
pos és la posició en què es troba y1 a v i
∣ v ∣ = ∣ r ∣.
POST:
El vector r conté tots els elements del
vector v i 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.
IMPORTANT: Només cal que envieu la funció que us demanem i les accions i funcions que vosaltres mateixos definiu. Mantingueu, però, les definicions de tipus i els #include
s.
Entrada
Un nombre indeterminat de vectors V amb el següent format: un enter que n’indica la mida, després el vector V, després la posició on es troba y1 a v i finalment un vector r de la mateixa mida que v. Tot vector V té una mida més gran o igual a 3.
Sortida
El vector r està ordenat i conté tots els elements de 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