in1 = input().split() n = int(in1[0]) k = int(in1[1]) t = int(in1[2]) in2 = input() inint = [] a = [0, 0, 0, 0] found = -1 for x in in2: act = int(x) inint.append(act) a[act] += 1 if k >= a[1]: print(a[3] + min(a[2] + a[1], k)) quit() hl = [0, 0, 0, 0] rl = [0, 0, 0, 0] for xx in range(t - 1): rl[inint[xx]] += 1 for rls in range(n - t): rl[inint[rls + t - 1]] += 1 w = [0, a[1] - hl[1] - rl[1], a[2] - hl[2] - rl[2], a[3] - hl[3] - rl[3]] rr = [0, 0, 0, 0] hr = [0, 0, 0, 0] for xx in range(n - t + 1, n): act = inint[xx] w[act] -= 1 rr[act] += 1 for rrs in range(n - t, t, -1): act = inint[rrs] w[act] -= 1 rr[act] += 1 opuszczone = hl[1] + rl[1] + rl[2] + rr[1] + rr[2] + hr[1] if opuszczone <= k: zapas = k - opuszczone wagary = min(zapas, hl[2] + hr[2]) nn = wagary + hl[1] + hr[1] + hl[3] + hr[3] found = max(found, nn) act2 = inint[rrs + t - 1] rr[act2] -= 1 hr[act2] += 1 act3 = inint[rls] hl[act3] += 1 rl[act3] -= 1 # 1. spotkanie w biurze, # 2. zdalne spotkanie, # 3. brak obowiązków. print(found)
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 | in1 = input().split() n = int(in1[0]) k = int(in1[1]) t = int(in1[2]) in2 = input() inint = [] a = [0, 0, 0, 0] found = -1 for x in in2: act = int(x) inint.append(act) a[act] += 1 if k >= a[1]: print(a[3] + min(a[2] + a[1], k)) quit() hl = [0, 0, 0, 0] rl = [0, 0, 0, 0] for xx in range(t - 1): rl[inint[xx]] += 1 for rls in range(n - t): rl[inint[rls + t - 1]] += 1 w = [0, a[1] - hl[1] - rl[1], a[2] - hl[2] - rl[2], a[3] - hl[3] - rl[3]] rr = [0, 0, 0, 0] hr = [0, 0, 0, 0] for xx in range(n - t + 1, n): act = inint[xx] w[act] -= 1 rr[act] += 1 for rrs in range(n - t, t, -1): act = inint[rrs] w[act] -= 1 rr[act] += 1 opuszczone = hl[1] + rl[1] + rl[2] + rr[1] + rr[2] + hr[1] if opuszczone <= k: zapas = k - opuszczone wagary = min(zapas, hl[2] + hr[2]) nn = wagary + hl[1] + hr[1] + hl[3] + hr[3] found = max(found, nn) act2 = inint[rrs + t - 1] rr[act2] -= 1 hr[act2] += 1 act3 = inint[rls] hl[act3] += 1 rl[act3] -= 1 # 1. spotkanie w biurze, # 2. zdalne spotkanie, # 3. brak obowiązków. print(found) |