fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, v[100001], x;
  6. cin >> n;
  7. for (int i = 1; i <= n; ++i) {
  8. cin >> v[i];
  9. }
  10. cin >> x;
  11. // Prima data cautam in tot sirul, de la pozitia 1 pana la n
  12. int stanga = 1, dreapta = n, m;
  13. // Cat timp subsecventa are mai mult de un element, o injumatatim alegand
  14. // fie jumatatea din stanga, fie cea din dreapta
  15. while (stanga < dreapta) {
  16. cout << "[" << stanga << " " << dreapta << "]";
  17. m = (stanga + dreapta) / 2;
  18. if (v[m] < x) {
  19. stanga = m + 1;
  20. } else {
  21. dreapta = m;
  22. }
  23. }
  24. // am ajuns la o subsecventa cu un singur element
  25. if (v[stanga] == x) {
  26. cout << x << " se gaseste in sir pe poz "<< stanga ;
  27. } else {
  28. cout << x << " nu se gaseste in sir";
  29. }
  30. return 0;
  31. }
Success #stdin #stdout 0s 5320KB
stdin
7
1 1 2 2 2 3 3
2
stdout
[1 7][1 4][3 4]2 se gaseste in sir pe poz 3