Workshop 3: Greedy Solutions === ### Puzzles ```python= n, m = map(int, input().split()) pieces = map(int, input().split()) def solve(n, m, p): p = sorted(p) i = n-1 j = 0 dif = 1001 while i < m: dif = min(dif, p[i]-p[j]) i += 1 j += 1 return dif print(solve(n, m, pieces)) ``` ### Dancers ```python= n, wc, bc = map(int, input().split()) ds = input().split() low_cost = min(wc, bc) cost = 0 for i, d in enumerate(ds): dc = ds[n - i - 1] if d == '2': if dc == '0': cost += wc elif dc == '1': cost += bc else: cost += low_cost elif dc != '2' and d != dc: cost = -1 break print(cost) ``` ### Garbage ```python= n, k = map(int, input().split()) a = [int(x) for x in input().split()] bags, r = 0, 0 for i in range(n): x = a[i] + r if x == 0: continue elif x < k and r > 0: bags += 1 r = 0 else: bags += (x // k) r = (x % k) if r > 0: bags += 1 print(bags) ``` ### Minimum Sum ```python= from collections import defaultdict n = int(input()) is_first = [] d = defaultdict(int) ans = 0 for _ in range(n): s = input() slen = len(s) for i in range(slen): t = s[i] if i == 0: if t not in is_first: is_first.append(t) num = 10 ** (slen - i - 1) d[t] += num l = sorted(d.items(), key=lambda v: v[1], reverse=True) for i, x in enumerate(l): if x[0] not in is_first: l.pop(i) break for i, x in enumerate(l): ans += x[1] * (i+1) print(ans) ```