Problem p03525 (python)

Fixed submission:
from itertools import product
import random

def solve(n,dl):
    # n = int(input())
    # dl = list(map(int, input().split()))

    if 0 in dl:
        return 0

    doubles = []
    dl1 = []
    dl2 = []
    for i in range(1,13):
        i_cnt = dl.count(i)
        if i_cnt > 2:
            return 0
        elif i_cnt == 2:
            dl2.append(24-i)
            dl2.append(i)
        elif i_cnt == 1:
            dl1.append(i)        

    ans = 0
    ite = list(product(range(2),repeat=len(dl1)))
    for pattern in ite:
        dl24 = [0,24]
        for i, v in enumerate(pattern):
            if v == 1:
                dl24.append(24-dl1[i])
            else:
                dl24.append(dl1[i])
        dl24 = dl24 + dl2
        dl24.sort()
        diff_min = 24
        # print(dl24)
        if len(dl24) == 1:
            ans = max(ans, min(dl24[0], 24-dl24[0]))
        else:
            for a,b in zip(dl24[:-1],dl24[1:]):
                diff = b-a
                if diff != 24:
                    diff_min = min(diff_min,diff)
            ans = max(diff_min,ans)
    return ans


def solve2(n,dl):
    ite = list(product(range(2),repeat=len(dl)))
    ans = 0
    for pattern in ite:
        dl_new = [0]
        for i, v in enumerate(pattern):
            if v == 1:
                dl_new.append(24-dl[i])
            else:
                dl_new.append(dl[i])
        dl_new.sort()
        diff_min = 24
        for a,b in zip(dl_new[:-1], dl_new[1:]):
            diff = b-a
            diff_min = min(diff_min, diff)
        ans = max(ans,diff_min)
    return ans


if __name__ == "__main__":
    n = int(input())
    dl = list(map(int, input().split()))
    ans = solve(n,dl)
    print(ans)
    # for _ in range(10):
    #     n = random.randint(1,10)
    #     dl = [random.randint(1,12) for _ in range(n)]
    #     ans1 = solve(n, dl[:])
        # ans2 = solve2(n,dl[:])
        # if ans1 != ans2:
        #     print(n)
        #     print(dl)
        #     print(ans1)
        #     print(ans2)
        #     print('----')

Buggy submission (verdict: Runtime Error):
from itertools import product
import random

def solve(n,dl):
    # n = int(input())
    # dl = list(map(int, input().split()))

    if 0 in dl:
        return 0

    doubles = []
    dl1 = []
    dl2 = []
    for i in range(1,13):
        i_cnt = dl.count(i)
        if i_cnt > 2:
            return 0
        elif i_cnt == 2:
            dl2.append(24-i)
            dl2.append(i)
        elif i_cnt == 1:
            dl1.append(i)        

    ans = 0
    ite = list(product(range(2),repeat=len(dl1)))
    for pattern in ite:
        dl24 = [0,24]
        for i, v in enumerate(pattern):
            if v == 1:
                dl24.append(24-dl1[i])
            else:
                dl24.append(dl1[i])
        dl24 = dl24 + dl2
        dl24.sort()
        diff_min = 24
        # print(dl24)
        if len(dl24) == 1:
            ans = max(ans, min(dl24[0], 24-dl24[0]))
        else:
            for a,b in zip(dl24[:-1],dl24[1:]):
                diff = b-a
                if diff != 24
                    diff_min = min(diff_min,diff)
            ans = max(diff_min,ans)
    return ans


def solve2(n,dl):
    ite = list(product(range(2),repeat=len(dl)))
    ans = 0
    for pattern in ite:
        dl_new = [0]
        for i, v in enumerate(pattern):
            if v == 1:
                dl_new.append(24-dl[i])
            else:
                dl_new.append(dl[i])
        dl_new.sort()
        diff_min = 24
        for a,b in zip(dl_new[:-1], dl_new[1:]):
            diff = b-a
            diff_min = min(diff_min, diff)
        ans = max(ans,diff_min)
    return ans


if __name__ == "__main__":
    n = int(input())
    dl = list(map(int, input().split()))
    ans = solve(n,dl)
    print(ans)
    # for _ in range(10):
    #     n = random.randint(1,10)
    #     dl = [random.randint(1,12) for _ in range(n)]
    #     ans1 = solve(n, dl[:])
        # ans2 = solve2(n,dl[:])
        # if ans1 != ans2:
        #     print(n)
        #     print(dl)
        #     print(ans1)
        #     print(ans2)
        #     print('----')

Buggy submission (verdict: Runtime Error):
from itertools import product
import numpy as np

n = int(input())
dl = list(map(int, input().split()))

if 0 in dl:
    print(0)
    exit()


doubles = []
dl1 = []
dl2 = []
for i in range(1,13):
    i_cnt = dl.count(i)
    if i_cnt > 2:
        print(0)
        exit()
    elif i_cnt == 2:
        dl2.append(24-i)
        dl2.append(i)
    elif i_cnt == 1:
        dl1.append(i)        


ans = 0
ite = list(product(range(2),repeat=len(dl1)))
for pattern in ite:
    dl24 = []
    for i, v in enumerate(pattern):
        if v == 1:
            dl24.append(24-dl1[i])
        else:
            dl24.append(dl1[i])
    dl24 = dl24 + dl2
    dl24.sort()
    diff = list(np.diff(dl24))
    ans = max(min(diff),ans)

print(ans)

Buggy submission (verdict: Runtime Error):
from itertools import product
import numpy as np

n = int(input())
dl = list(map(int, input().split()))

if 0 in dl:
    print(0)
    exit()


doubles = []
dl1 = []
dl2 = []
for i in range(1,13):
    i_cnt = dl.count(i)
    if i_cnt > 2:
        print(0)
        exit()
    elif i_cnt == 2:
        dl2.append(24-i)
        dl2.append(i)
    elif i_cnt == 1:
        dl1.append(i)        


ans = 0
ite = list(product(range(2),repeat=len(dl1)))
for pattern in ite:
    dl24 = []
    for i, v in enumerate(pattern):
        if v == 1:
            dl24.append(24-dl1[i])
        else:
            dl24.append(dl1[i])
    dl24 = dl24 + dl2
    dl24.sort()
    diff = list(np.diff(dl24))
    ans = max(min(diff),ans)

print(ans)