fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int ask(int l,int r){
  5. cout << "AK " << l << " " << r << "\n" << flush;
  6. string s; cin >> s;
  7. return s=="O";
  8. }
  9.  
  10. vector<int> solve(int l,int r,int k){
  11. if(k==0) return {};
  12. if(l==r){
  13. if(k==1) return {l};
  14. return {};
  15. }
  16. int mid=(l+r)/2;
  17. if(k==1){
  18. if(ask(l,mid)){
  19. return solve(l,mid,1);
  20. }else{
  21. return solve(mid+1,r,1);
  22. }
  23. }else{ // k==2
  24. if(ask(l,mid)){
  25. auto L=solve(l,mid,1);
  26. auto R=solve(mid+1,r,1);
  27. L.insert(L.end(),R.begin(),R.end());
  28. return L;
  29. }else{
  30. auto L=solve(l,mid,2);
  31. if((int)L.size()==2) return L;
  32. auto R=solve(mid+1,r,2);
  33. return R;
  34. }
  35. }
  36. }
  37.  
  38. int main(){
  39. ios::sync_with_stdio(false);
  40. cin.tie(nullptr);
  41. int T; cin >> T;
  42. while(T--){
  43. int N; cin >> N;
  44. auto ans=solve(1,N,2);
  45. cout << "! " << ans[0] << " " << ans[1] << "\n" << flush;
  46. }
  47. }
Success #stdin #stdout 0.01s 5328KB
stdin
1
10

X

O

X

X

O

X
stdout
AK 1 5
AK 1 3
AK 1 2
AK 4 4
! 3 5