Advertisement
allia

первое и последнее вхождение

Oct 6th, 2020
901
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void poisk (int *arr, int left, int right, int znach, int razmer)
  5. {
  6.   int t=-1;
  7.  
  8.   while (right>=left)
  9.   {
  10.     int i = (right+left)/2;
  11.     int middle = arr[i];
  12.  
  13.      if (middle == znach)
  14.       {
  15.        t=i;
  16.        while (arr[t]==znach && t!=-1)
  17.        t--;
  18.        cout << t+2 << " ";
  19.        t+=1;
  20.        while (arr[t]==znach && t!=razmer)
  21.        t++;
  22.        cout << t << endl;
  23.        goto printl;
  24.       }
  25.      else if (znach < middle)
  26.         right = i-1;
  27.      else if (znach > middle)
  28.         left = i+1;
  29.   }
  30.  
  31. printl:
  32. if (t==-1)
  33. cout << "Not found" << endl;
  34. }
  35.  
  36. int main()
  37. {
  38.   int n=0, m=0, *arr;
  39.   cin >> n;
  40.   arr = new int[n];
  41.  
  42.   for (int i=0; i<n; i++)
  43.   cin >> arr[i];
  44.  
  45.   cin >> m;
  46.  
  47.   int zapros = 0;
  48.  
  49.   for (int j=0; j<m; j++)
  50.   {
  51.     cin >> zapros;
  52.  
  53.     if (zapros < arr[0] || zapros > arr[n-1])
  54.      cout << "Not found" << endl;
  55.     else
  56.      poisk (arr, 0, n-1, zapros, n);
  57.  }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement