Cerca en un vector unimodal X82938


Statement
 

pdf   zip   main.cc

html

En aquest problema, diem que un vector de n nombres enters v[0..n−1] és unimodal si n ≥ 1, i existeix un índex j tal que 0 ≤ jn−1 i que satisfà:

  • v[0] < … < v[j−1] < v[j], i
  • v[j] > v[j+1] > v[j+2] > … > v[n−1].


Per exemple, el vector [0, 2, 5, 7, 6, 5, 4, 3, 1] és unimodal (amb j = 3).



Noteu que els vectors amb n ≤ 2 elements diferents són unimodals. En general, noteu que tot vector estrictament creixent també és unimodal (i en tots els casos j = n−1), i anàlogament, tot vector estrictamentment decreixent també és unimodal (i llavors j = 0).



Implementeu una funció eficient

bool search(int x, const vector<int>& v);

que, donats un enter x i un vector unimodal v, retorni cert si x apareix a v, i fals en cas contrari. Podeu usar i implementar funcions auxiliars si us calen.

Precondició

El vector v és unimodal.

Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.

Information
Author
Prof. EDA
Language
Catalan
Other languages
English
Official solutions
C++
User solutions
C++