-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathvalet_parking_chapter_1.py
29 lines (25 loc) · 1011 Bytes
/
valet_parking_chapter_1.py
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
# Copyright (c) 2021 kamyu. All rights reserved.
#
# Facebook Hacker Cup 2021 Round 2 - Problem C. Valet Parking - Chapter 1
# https://www.facebook.com/codingcompetitions/hacker-cup/2021/round-2/problems/C1
#
# Time: O(R * C)
# Space: O(min(R, C))
#
from collections import Counter
def valet_parking_chapter_1():
R, C, K = map(int, raw_input().strip().split())
G = [raw_input().strip() for _ in xrange(R)]
cnts = Counter()
left, right = max(K-(C-1), 0), min(K+(C-1), R+1)
for j in xrange(C):
total = sum(G[i][j] == 'X' for i in xrange(R))
curr = sum(1 <= i <= R and G[i-1][j] == 'X' for i in xrange(left))
for i in xrange(left, right+1):
has_x = (1 <= i <= R and G[i-1][j] == 'X')
curr += has_x
if curr >= K or total-curr >= R-K+1 or has_x:
cnts[i] += 1
return min(abs(i-K)+cnts[i] for i in xrange(left, right+1))
for case in xrange(input()):
print 'Case #%d: %s' % (case+1, valet_parking_chapter_1())