Programarea pe mobil funcționează. Un laptop este mai rapid pentru sesiuni lungi.

Problema

Se citesc două numere naturale n și x, iar apoi n numere întregi reprezentând un vector v sortat crescător (v[0] < v[1] < ... < v[n-1]). Afișați poziția (numerotată de la 1) pe care apare x în vector sau -1 dacă x nu apare. Căutarea trebuie făcută folosind o funcție recursivă de căutare binară.

Definiți o funcție recursivă cautBin(v, lo, hi, x) care întoarce poziția lui x în v între indicii lo și hi sau -1 dacă x nu apare. La fiecare apel calculezi mid = (lo + hi) / 2 și:

  • dacă v[mid] == x, întorci mid + 1 (poziția 1-bazată);
  • dacă x < v[mid], recurgi pe jumătatea stângă [lo, mid-1];
  • dacă x > v[mid], recurgi pe jumătatea dreaptă [mid+1, hi].

Caz de bază: dacă lo > hi, întorci -1.

Format Date de intrare

Date de intrare input.txt

De pe prima linie se citesc `n` și `x`, separate prin spațiu. Pe a doua linie se citesc cele `n` elemente ale vectorului, separate prin spațiu, în ordine strict crescătoare. - `1 <= n <= 50` - Elementele vectorului sunt numere întregi cu valoarea absolută cel mult `1.000.000.000`, strict crescătoare. - Soluția trebuie să folosească recursivitate.

Format Date de ieșire

Date de ieșire output.txt

Programul afișează poziția lui `x` (de la 1 la `n`) sau `-1` dacă nu apare, urmată de linie nouă.

Exemplu

intrare
6 7
1 3 5 7 9 11
rezultat
4

Ești gata să rezolvi această provocare?

Creează un cont gratuit pentru a scrie cod, a trimite soluții și a-ți urmări progresul.

⌨️ Scurtături de tastatură

Editor de cod
Rulează codul
Ctrl Enter
Trimite codul
Ctrl Shift Enter
Formatează codul
Shift Alt F
Comută comentariul
Ctrl /
Anulează
Ctrl Z
Refă
Ctrl Y
Navigare
Căutare globală
/
Afișează scurtăturile
?
Închide fereastra
Esc

🔍 Depanator interactiv

0 / 0

Se analizează codul tău...

📦 Variabile

Nicio variabilă încă

📚 Stivă de apeluri
main() linia 1
📤 Rezultat