fork download
  1. #include <iostream>
  2.  
  3. void send(bool in[], bool out[], int N, int B)
  4. {
  5. for(int i = 0; i < N; i++)
  6. std::cout << in[i];
  7. std::cout << std::endl;
  8. char c;
  9. for(int i = 0; i < N-B; i++)
  10. {
  11. std::cin >> c;
  12. out[i] = (c=='1');
  13. }
  14. }
  15.  
  16. int main()
  17. {
  18. int T;
  19. std::cin >> T;
  20.  
  21. while(T--)
  22. {
  23. int N, B, F;
  24. std::cin >> N >> B >> F;
  25.  
  26. int set[N-B];
  27. for(int i = 0; i < N-B; i++)
  28. set[i] = 0;
  29.  
  30. bool in[N];
  31. bool out[N-B];
  32.  
  33. for(int k = 0; k < 4; k++)
  34. {
  35. for(int i = 0; i < N; i++)
  36. in[i] = i&(1 << k);
  37. send(in, out, N, B);
  38. for(int i = 0; i < N-B; i++)
  39. set[i] += out[i]*(1 << k);
  40. }
  41.  
  42. bool status[N];
  43. for(int i = 0; i < N; i++)
  44. status[i] = false;
  45.  
  46. int pre = 0;
  47. int last = -1;
  48. for(int i = 0; i < N-B; i++)
  49. {
  50. if(set[i] <= last)
  51. pre += 16;
  52. status[pre + set[i]] = true;
  53. last = set[i];
  54. }
  55.  
  56. for(int i = 0; i < N; i++)
  57. if(!status[i])
  58. std::cout << i << " ";
  59.  
  60. std::cout << std::endl;
  61. std::cin >> pre;
  62. }
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty