Advertisement
ForestFox

HW1_bin_search

Jul 27th, 2023 (edited)
975
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. #bin search
  2.  
  3. #1j
  4. def ok(mx):
  5.     for i in range(n - mx + 1):
  6.         if a[i] == a[i + mx - 1]:
  7.             return True
  8.     return False
  9.  
  10.  
  11. n = int(input())
  12. a = sorted(list(map(int, input().split())))
  13.  
  14. l = 0
  15. r = n
  16. ans = 0
  17.  
  18. while l <= r:
  19.     mid = (l + r) // 2
  20.     if ok(mid):
  21.         l = mid + 1
  22.         ans = mid
  23.     else:
  24.         r = mid - 1
  25. print(n - ans)
  26.  
  27.  
  28. #2m
  29. def ok(op, s, k):
  30.     count_0, count_1 = 0, 0
  31.     for i in range(k):
  32.         if s[i] == "0":
  33.             count_0 += 1
  34.         else:
  35.             count_1 += 1
  36.     min_replace = min(count_0, count_1)
  37.     for i in range(len(s) - k):
  38.         if s[i] == "0":
  39.             count_0 -= 1
  40.         else:
  41.             count_1 -= 1
  42.  
  43.         if s[i + k] == "0":
  44.             count_0 += 1
  45.         else:
  46.             count_1 += 1
  47.         min_replace = min(min_replace, min(count_0, count_1))
  48.     return min_replace <= op
  49.  
  50.  
  51. if __name__ == "__main__":
  52.     s = input()
  53.     n = int(input())
  54.     k = int(input())
  55.     l = 0
  56.     r = n
  57.     ans = 0
  58.     while l <= r:
  59.         mid = (l + r) // 2
  60.         if ok(mid, s, k):
  61.             ans = mid
  62.             r = mid - 1
  63.         else:
  64.             l = mid + 1
  65. #3s
  66. n, k = map(int, input().split())
  67. l = 1
  68. r = n * n
  69.  
  70.  
  71. def ok(pr):
  72.     j = n
  73.     cnt = 0
  74.     for i in range(1, n + 1):
  75.         while i * j > pr:
  76.             j -= 1
  77.         cnt += j
  78.     return cnt <= k
  79.  
  80.  
  81. while l <= r:
  82.     mid = (l + r) // 2
  83.     if ok(mid):
  84.         ans = mid
  85.         l = mid + 1
  86.     else:
  87.         r = mid - 1
  88. print(ans)
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement