Advertisement
allia

количество циклических сдвигов

Oct 12th, 2020 (edited)
2,033
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. void poisk (int raznica, int left, int right)
  6. {
  7.  int i=(right + left)/2;
  8.  int middle = 0;
  9.  
  10.   cout << "?" << " " << i << endl;
  11.   cin >> middle;
  12.  
  13.   int tek_raznica = middle - i;
  14.  
  15.   if (tek_raznica < raznica)
  16.     {
  17.       right = i;
  18.       if (right - left == 1)
  19.        cout << "!" << " " << left << endl;
  20.       else
  21.         poisk (raznica, left, right);
  22.     }
  23.   if (tek_raznica >= raznica)
  24.     {
  25.       left = i;
  26.       if (right - left == 1)
  27.         cout << "!" << " " << left << endl;
  28.       else
  29.         poisk (raznica, left, right);
  30.       }
  31.  
  32. }
  33. int main()
  34.   {
  35.     cout.flush();
  36.     int n=0,  elem_first;
  37.     cin >> n;
  38.  
  39.     cout << "?" << " " << 1 << endl;
  40.     cin >> elem_first;
  41.     int raznica = elem_first-1;
  42.    
  43.     poisk(raznica, 1, n);
  44.  
  45.   }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement