#!/usr/bin/python3 # === wej === n, m = input().split() n, m = int(n), int(m) t = [] t.append("~" * (m+1)) for i in range(n): line = input() assert(len(line) == m) t.append(list("~" + line)) # === prog === moves = [] def ready_x(x): letters_set = set() for y in range(1, n+1): letters_set.add(t[y][x]) if len(letters_set) == 1: letter = letters_set.pop() return letter if letter != '.' else None elif len(letters_set) == 2: letters = sorted(letters_set) return letters[1] if letters[0] == '.' else None else: return None def ready_y(y): letters_set = set() for x in range(1, m+1): letters_set.add(t[y][x]) if len(letters_set) == 1: letter = letters_set.pop() return letter if letter != '.' else None elif len(letters_set) == 2: letters = sorted(letters_set) return letters[1] if letters[0] == '.' else None else: return None dalej = True while dalej: dalej = False for x in range(1, m+1): paint = ready_x(x) if paint: moves.append(f"K {x} {paint}") for y in range(1, n+1): t[y][x] = '.' dalej = True for y in range(1, n+1): paint = ready_y(y) if paint: moves.append(f"R {y} {paint}") for x in range(1, m+1): t[y][x] = '.' dalej = True # === wyj === print(len(moves)) for line in reversed(moves): print(line)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #!/usr/bin/python3 # === wej === n, m = input().split() n, m = int(n), int(m) t = [] t.append("~" * (m+1)) for i in range(n): line = input() assert(len(line) == m) t.append(list("~" + line)) # === prog === moves = [] def ready_x(x): letters_set = set() for y in range(1, n+1): letters_set.add(t[y][x]) if len(letters_set) == 1: letter = letters_set.pop() return letter if letter != '.' else None elif len(letters_set) == 2: letters = sorted(letters_set) return letters[1] if letters[0] == '.' else None else: return None def ready_y(y): letters_set = set() for x in range(1, m+1): letters_set.add(t[y][x]) if len(letters_set) == 1: letter = letters_set.pop() return letter if letter != '.' else None elif len(letters_set) == 2: letters = sorted(letters_set) return letters[1] if letters[0] == '.' else None else: return None dalej = True while dalej: dalej = False for x in range(1, m+1): paint = ready_x(x) if paint: moves.append(f"K {x} {paint}") for y in range(1, n+1): t[y][x] = '.' dalej = True for y in range(1, n+1): paint = ready_y(y) if paint: moves.append(f"R {y} {paint}") for x in range(1, m+1): t[y][x] = '.' dalej = True # === wyj === print(len(moves)) for line in reversed(moves): print(line) |