from typing import List
def getMinProblemCount(N: int, S: List[int]) -> int:
mods_3 = [False] * 3
has_one = 1 in S
max_score = max(S)
max_score_multiple_3 = 0
for score in S:
if score % 3 == 0:
max_score_multiple_3 = max(max_score_multiple_3, score)
mods_3[score % 3] = True
if max_score % 3 == 0 and mods_3[1] and mods_3[2]:
return int(max_score / 3) + 1
if not has_one and mods_3[1] and mods_3[2] and max_score_multiple_3 != 3 * int(max_score / 3):
return int(max_score / 3) + 2 - (1 if max_score % 3 == 1 else 0)
return int(max_score / 3) + (1 if mods_3[1] else 0) + (1 if mods_3[2] else 0)
if __name__ == '__main__':
SAMPLES = [
(11, [1,4,2,3,1,4,5,1,5,1,6]), # -> 3
(4, [4, 3, 3, 4]), # -> 2
(4, [2, 4, 6, 8]), # -> 4
(1, [8]), # -> 3
(5, [9,6,3,2,1])
]
for sample in SAMPLES:
print(getMinProblemCount(*sample))
ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKCgpkZWYgZ2V0TWluUHJvYmxlbUNvdW50KE46IGludCwgUzogTGlzdFtpbnRdKSAtPiBpbnQ6CiAgICBtb2RzXzMgPSBbRmFsc2VdICogMwogICAgaGFzX29uZSA9IDEgaW4gUwogICAgbWF4X3Njb3JlID0gbWF4KFMpCiAgICBtYXhfc2NvcmVfbXVsdGlwbGVfMyA9IDAKCiAgICBmb3Igc2NvcmUgaW4gUzoKICAgICAgICBpZiBzY29yZSAlIDMgPT0gMDoKICAgICAgICAgICAgbWF4X3Njb3JlX211bHRpcGxlXzMgPSBtYXgobWF4X3Njb3JlX211bHRpcGxlXzMsIHNjb3JlKQogICAgICAgIG1vZHNfM1tzY29yZSAlIDNdID0gVHJ1ZQoKICAgIGlmIG1heF9zY29yZSAlIDMgPT0gMCBhbmQgbW9kc18zWzFdIGFuZCBtb2RzXzNbMl06CiAgICAgICAgcmV0dXJuIGludChtYXhfc2NvcmUgLyAzKSArIDEKCiAgICBpZiBub3QgaGFzX29uZSBhbmQgbW9kc18zWzFdIGFuZCBtb2RzXzNbMl0gYW5kIG1heF9zY29yZV9tdWx0aXBsZV8zICE9IDMgKiBpbnQobWF4X3Njb3JlIC8gMyk6CiAgICAgICAgcmV0dXJuIGludChtYXhfc2NvcmUgLyAzKSArIDIgLSAoMSBpZiBtYXhfc2NvcmUgJSAzID09IDEgZWxzZSAwKQoKICAgIHJldHVybiBpbnQobWF4X3Njb3JlIC8gMykgKyAoMSBpZiBtb2RzXzNbMV0gZWxzZSAwKSArICgxIGlmIG1vZHNfM1syXSBlbHNlIDApCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKCiAgICBTQU1QTEVTID0gWwogICAgICAgICgxMSwgWzEsNCwyLDMsMSw0LDUsMSw1LDEsNl0pLCAgIyAtPiAzCiAgICAgICAgKDQsIFs0LCAzLCAzLCA0XSksICAjIC0+IDIKICAgICAgICAoNCwgWzIsIDQsIDYsIDhdKSwgICMgLT4gNAogICAgICAgICgxLCBbOF0pLCAgIyAtPiAzCiAgICAgICAgKDUsIFs5LDYsMywyLDFdKQogICAgXQoKICAgIGZvciBzYW1wbGUgaW4gU0FNUExFUzoKICAgICAgICBwcmludChnZXRNaW5Qcm9ibGVtQ291bnQoKnNhbXBsZSkp