Advertisement
allia

решенный интерактивный поиск

Oct 5th, 2020 (edited)
1,176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void bin( int a, int b, int l, int n)
  5. {
  6.  
  7.   if (n-l==1)
  8.   {
  9.     if (a!=l)
  10.     cout << "! " << l << endl;
  11.     else cout << "! " << n << endl;
  12.   }
  13.   else
  14.   {
  15.     int i=(n-l)/2+1+l;
  16.     int middle = 0;
  17.  
  18.      cout << "?" << " " << i << endl;
  19.      cin >> middle;
  20.  
  21.      if (middle - a != i-1-l)
  22.       {
  23.        n=i-1;
  24.        bin (a, middle, l, n);
  25.       }
  26.      else//проверяем вторую половину
  27.      {
  28.       if (b-middle!=i-1) //берем последний элемент первой половины как 0 следующей половины
  29.        {
  30.         l=i-1;
  31.         bin (middle, b, l, n);
  32.        }
  33.      }
  34.   }
  35. }
  36.  
  37. int main()
  38. {
  39.  cout.flush();
  40.  int n;
  41.  cin >> n;
  42.  
  43. int elem_last=0, elem_0=0;
  44.  
  45.   cout << "?" << " " << 1 << endl;
  46.   cin >> elem_0;
  47.  
  48.   cout << "?" << " " << n << endl;
  49.   cin >> elem_last;
  50.  
  51.   bin(elem_0, elem_last, 0, n-1);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement