Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
562
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.45 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3. import static java.lang.System.out;
  4.  
  5. /**
  6.  *
  7.  * ESAb ATAd
  8.  *
  9.  *
  10.  */
  11. public class Solution {
  12.  
  13.     private static Scanner sc;
  14.  
  15.     public static void main(String[] args) throws Exception {
  16.  
  17.         sc = new Scanner(System.in);
  18.  
  19.         String[] tb = sc.nextLine().split(" ");
  20.         int T = Integer.parseInt(tb[0]);
  21.         int B = Integer.parseInt(tb[1]);
  22.         System.err.println(T + " " + B);
  23.  
  24.         for (int t = 1; t <= T; ++t) {
  25.             solve(t, B);
  26.         }
  27.  
  28.         sc.close();
  29.  
  30.         // tests();
  31.     }
  32.  
  33.     private static void solve(int t, int B) {
  34.  
  35.         List<int[]> list = new ArrayList<int[]>();
  36.         int[] tmp1 = new int[B];
  37.         Arrays.fill(tmp1, -1);
  38.         list.add(tmp1);
  39.  
  40.         for (int i = 0; i <= 150;) {
  41.             for (int b = 0; b < B && i <= 150; ++b) {
  42.                 if (list.size() == 1) {
  43.                     boolean isComplete = true;
  44.                     int[] l = list.get(0);
  45.                     for (int j = 0; j < B; j++) {
  46.                         if (l[j] == -1) {
  47.                             isComplete = false;
  48.                             break;
  49.                         }
  50.                     }
  51.                     if (isComplete) {
  52.                         StringBuilder answer = new StringBuilder();
  53.                         for (int j = 0; j < B; j++) {
  54.                             answer.append(l[j]);
  55.                         }
  56.                         out.println(answer.toString());
  57.                         String reply = sc.nextLine();
  58.                         System.err.println("Reply: " + reply);
  59.                         if ("Y".equals(reply)) return;
  60.                         else System.exit(-1);
  61.                     }
  62.                 }
  63.  
  64.                 ++i; out.println(b+1);
  65.                 int bit = Integer.parseInt(sc.nextLine());
  66.                 System.err.println(bit);
  67.                 final int idx = b;
  68.                 if (i % 10 != 1) {
  69.                     list.removeIf(l -> l[idx] != -1 && l[idx] != bit);
  70.                 }
  71.  
  72.                 int size = list.size();
  73.                 for (int j = 0; j < size; j++) {
  74.                     int[] l = list.get(j);
  75.  
  76.                     l[b] = bit;
  77.  
  78.                     if (i > 1 && i % 10 == 1) {
  79.                         int[] inverted = invert(l, b);
  80.                         list.add(inverted);
  81.                         int[] tmp = reverse(l);
  82.                         list.add(tmp);
  83.                         tmp = reverse(inverted);
  84.                         list.add(tmp);
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.     }
  90.  
  91.     private static int[] invert(int[] array, int b) {
  92.         int[] inverted = new int[array.length];
  93.  
  94.         for (int i = 0; i < inverted.length; i++) {
  95.             if (i == b) {
  96.                 inverted[i] = array[i];
  97.             } else if (array[i] == -1) {
  98.                 inverted[i] = -1;  
  99.             } else {
  100.                 inverted[i] = array[i] == 0 ? 1 : 0;
  101.             }
  102.         }
  103.  
  104.         return inverted;
  105.     }
  106.  
  107.     private static int[] reverse(int[] array) {
  108.         int[] reversed = new int[array.length];
  109.  
  110.         for (int i = 0, j = array.length - 1; i < array.length/2; i++, j--) {
  111.             reversed[i] = array[j];
  112.             reversed[j] = array[i];
  113.         }
  114.  
  115.         return reversed;
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement