blob: b17c986ce4b53112afa4b2f39e01a736fd25d65a (
plain) (
blame)
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
|
#!/bin/env python
L = open("input").read().split("\n\n")
ordering = [[int(c) for c in l.split("|")] for l in L[0].split("\n")]
numss = [[int(c) for c in l.split(",")] for l in L[1].strip().split("\n")]
def check(nums):
pos = (-1, -1)
ordered = True
for i, a in enumerate(nums):
for j, b in enumerate(nums[i:]):
if [b, a] in ordering:
ordered = False
pos = (i, i + j)
break
if not ordered:
break
return (pos, ordered)
def fix(nums):
while True:
pos, ordered = check(nums)
if ordered:
return nums
nums[pos[0]], nums[pos[1]] = nums[pos[1]], nums[pos[0]]
def solve():
res1 = 0
res2 = 0
for n, nums in enumerate(numss):
_, ordered = check(nums)
if ordered:
res1 += nums[len(nums) // 2]
else:
fixed = fix(nums.copy())
res2 += fixed[len(fixed) // 2]
print(res1)
print(res2)
solve()
|