import sys
def read_data(data: str) -> dict:
data = data.split("\n")
result = {"days": int(data[0]), "desc": []}
desc_block = []
for i in range(1, len(data)):
if i%2 == 0:
d = [int(a) for a in data[i].split(' ')]
desc_block.append(d)
result["desc"].append(desc_block)
desc_block = []
else:
desc_block.append(int(data[i]))
return result
def remove_zero(wylicz: list[int]):
if 0 in wylicz:
start_zero = wylicz.index(0) == 0
end_zero = wylicz[::-1].index(0) == 0
while start_zero or end_zero:
if start_zero:
wylicz = wylicz[1:]
if end_zero:
wylicz = wylicz[:-1]
if 0 not in wylicz:
break
start_zero = wylicz.index(0) == 0
end_zero = wylicz[::-1].index(0) == 0
return wylicz
def wyliczaj(wyliczanka: list[int], i: int = None):
i = wyliczanka.index(max(wyliczanka)) if not i else i
while(i <= len(wyliczanka) - 1):
wyliczanka[i] -= 1
if wyliczanka[i] == 0 and i != len(wyliczanka) - 1:
return wyliczanka
i += 1
wyliczanka = remove_zero(wyliczanka)
if i > len(wyliczanka) - 1:
i = len(wyliczanka) - 1
wyliczanka[i] -= 1
while(i > 1):
i -= 1
wyliczanka[i] -= 1
if wyliczanka[i] == 0 and i != 0:
return wyliczanka
wyliczanka = remove_zero(wyliczanka)
while len(wyliczanka) > 1 and 0 not in wyliczanka:
wyliczanka = wyliczaj(wyliczanka, i)
return wyliczanka
data = read_data(sys.stdin.read())
for d in data["desc"]:
toys: int = d[0]
wylicz: list[int] = d[1]
wylicz = remove_zero(wylicz)
if 0 in wylicz:
print("NIE")
continue
if len(wylicz) == 0 or len(wylicz) == 1 and wylicz[0] != 1:
print("NIE")
continue
elif len(wylicz) == 1 and wylicz[0] == 1:
print("TAK")
continue
wylicz = wyliczaj(wylicz)
if 0 in wylicz:
print("NIE")
continue
if (len(wylicz) == 1 and wylicz[0] == 1) or len(wylicz) == 0:
print("TAK")
else:
print("NIE")
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | import sys def read_data(data: str) -> dict: data = data.split("\n") result = {"days": int(data[0]), "desc": []} desc_block = [] for i in range(1, len(data)): if i%2 == 0: d = [int(a) for a in data[i].split(' ')] desc_block.append(d) result["desc"].append(desc_block) desc_block = [] else: desc_block.append(int(data[i])) return result def remove_zero(wylicz: list[int]): if 0 in wylicz: start_zero = wylicz.index(0) == 0 end_zero = wylicz[::-1].index(0) == 0 while start_zero or end_zero: if start_zero: wylicz = wylicz[1:] if end_zero: wylicz = wylicz[:-1] if 0 not in wylicz: break start_zero = wylicz.index(0) == 0 end_zero = wylicz[::-1].index(0) == 0 return wylicz def wyliczaj(wyliczanka: list[int], i: int = None): i = wyliczanka.index(max(wyliczanka)) if not i else i while(i <= len(wyliczanka) - 1): wyliczanka[i] -= 1 if wyliczanka[i] == 0 and i != len(wyliczanka) - 1: return wyliczanka i += 1 wyliczanka = remove_zero(wyliczanka) if i > len(wyliczanka) - 1: i = len(wyliczanka) - 1 wyliczanka[i] -= 1 while(i > 1): i -= 1 wyliczanka[i] -= 1 if wyliczanka[i] == 0 and i != 0: return wyliczanka wyliczanka = remove_zero(wyliczanka) while len(wyliczanka) > 1 and 0 not in wyliczanka: wyliczanka = wyliczaj(wyliczanka, i) return wyliczanka data = read_data(sys.stdin.read()) for d in data["desc"]: toys: int = d[0] wylicz: list[int] = d[1] wylicz = remove_zero(wylicz) if 0 in wylicz: print("NIE") continue if len(wylicz) == 0 or len(wylicz) == 1 and wylicz[0] != 1: print("NIE") continue elif len(wylicz) == 1 and wylicz[0] == 1: print("TAK") continue wylicz = wyliczaj(wylicz) if 0 in wylicz: print("NIE") continue if (len(wylicz) == 1 and wylicz[0] == 1) or len(wylicz) == 0: print("TAK") else: print("NIE") |
English