Vector bicreixent P99753


Statement
 

pdf   zip   main.cc

En aquest problema, diem que un vector de nn nombres enters v[0..n1]v[0..n-1] és bicreixent si n2n \ge 2, v[0]>v[n1]v[0] > v[n-1], i existeix un índex jj entre 00 i n2n-2 que satisfà:

  • v[0]v[j1]v[j]v[0] \le \ldots \le v[j-1] \le v[j],

  • v[j+1]v[j+2]v[n1]v[j+1] \le v[j+2] \le \ldots \le v[n-1].

Per exemple, el vector [12,12,15,20,1,3,3,5,9][12, 12, 15, 20, 1, 3, 3, 5, 9] és bicreixent (amb j=3j = 3).

Implementeu una funció eficient

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

que, donats un enter xx i un vector bicreixent vv, retorni si xx apareix a vv o no. Podeu usar i implementar funcions auxiliars si us calen.

Precondició

El vector vv és bicreixent.

Observació

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

Information
Author
Salvador Roura
Language
Catalan
Other languages
English
Official solutions
C++
User solutions
C++