Advertisement
allia

поиск количества единиц

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