Advertisement
ivnikkk

Untitled

Jun 28th, 2022
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define debug(tl) cerr<<#tl<<' '<<tl<<'\n';
  3. #include "bits/stdc++.h"
  4. using namespace std;
  5. #define all(d) d.begin(), d.end()
  6. typedef long long ll;
  7. typedef pair<ll, ll> pll;
  8. typedef pair<int, int> pii;
  9. typedef long double ld;
  10. signed main() {/*
  11. #ifdef _DEBUG
  12.     freopen("input.txt", "r", stdin);
  13.     freopen("output.txt", "w", stdout);
  14. #endif*/
  15.     ios_base::sync_with_stdio(false);
  16.     cin.tie(nullptr);
  17.     cout.tie(nullptr);
  18.     ll t;
  19.     cin >> t;
  20.     while (t--) {
  21.         ll n; cin >> n;
  22.         auto ask = [&](ll l, ll r, vector<ll>& a) {
  23.             cout << "? " << max(1ll, l) << ' ' << min(n, r) << endl;
  24.             a.resize(min(n,r) - max(1ll,l) + 1);
  25.             for (ll& i : a)cin >> i;
  26.         };
  27.         auto count = [&](ll l, ll r, vector<ll>& a) {
  28.             ll count = 0;
  29.             for (ll& i : a) {
  30.                 count += (i >= l && i <= r);
  31.             }
  32.             return count % 2;
  33.         };
  34.         ll l = 0, r = n + 1;
  35.         while (r - l > 1) {
  36.             ll mid = (r + l) / 2;
  37.             vector<ll> a;
  38.             ask(l, mid, a);
  39.             if (count(l, r, a)) {
  40.                 r = mid;
  41.             }
  42.             else {
  43.                 l = mid;
  44.             }
  45.         }
  46.         cout << "! " << min(n,r) << endl;
  47.     }
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement