Advertisement
Guest User

Untitled

a guest
Mar 7th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. import itertools
  2.  
  3. def kbits(n, k):
  4. result = []
  5. for bits in itertools.combinations(range(n), k):
  6. s = ['0'] * n
  7. for bit in bits:
  8. s[bit] = '1'
  9. result.append(''.join(s))
  10. return result
  11.  
  12. def g(s):
  13. mx = -1
  14. count = 1
  15. for i in range(1, len(s)):
  16. if s[i] == s[i - 1]:
  17. count += 1
  18. else:
  19. count = 1
  20. mx = max(mx, count)
  21. return mx
  22.  
  23. def flip(s, k):
  24. s = list(s)
  25. for i in range(len(s)):
  26. if k[i] == "1":
  27. s[i] = '1' if s[i] == '0' else '0'
  28. return "".join(s)
  29.  
  30. def f(n, k, s):
  31. kbit = []
  32. for _k in range(k + 1):
  33. kbit.extend(kbits(n, _k))
  34. ans = 999999999999999999999
  35. for kb in kbit:
  36. ans = min(ans, g(flip(s, kb)))
  37. return ans
  38.  
  39.  
  40. t = int(input())
  41. for _ in range(t):
  42. n, k = map(int, input().split())
  43. s = input()
  44. print(f(n, k, s))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement