Life of a Flower (Codeforces 1591A)
Tags: Implement, implementation

Petya has got an interesting flower. Petya is a busy person, so he sometimes forgets to water it. You are given $$$n$$$ days from Petya's live and you have to determine what happened with his flower in the end.The flower grows as follows:   If the flower isn't watered for two days in a row, it dies.  If the flower is watered in the $$$i$$$-th day, it grows by $$$1$$$ centimeter.  If the flower is watered in the $$$i$$$-th and in the $$$(i-1)$$$-th day ($$$i > 1$$$), then it grows by $$$5$$$ centimeters instead of $$$1$$$.  If the flower is not watered in the $$$i$$$-th day, it does not grow. At the beginning of the $$$1$$$-st day the flower is $$$1$$$ centimeter tall. What is its height after $$$n$$$ days?

Input: Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 100$$$). Description of the test cases follows.The first line of each test case contains the only integer $$$n$$$ ($$$1 \leq n \leq 100$$$).The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$a_i = 0$$$ or $$$a_i = 1$$$). If $$$a_i = 1$$$, the flower is watered in the $$$i$$$-th day, otherwise it is not watered.

Output: For each test case print a single integer $$$k$$$ — the flower's height after $$$n$$$ days, or $$$-1$$$, if the flower dies.


Sample Inputs:
4
3
1 0 1
3
0 1 1
4
1 0 0 1
1
0

Sample Outputs:
3
7
-1
1

Solution (Python):
t = int(input())
for i in range(t):
    n = int(input())
    days = list(map(int, input().split()))
    height = 1
    died = False
    for j in range(n):
        if days[j] == 1:
            if j > 0 and days[j - 1] == 1:
                height += 5
            else:
                height += 1
        elif j > 0 and days[j - 1] == 0:
            died = True
            break
    if died:
        print(-1)
    else:
        print(height)

Solution (Python):
def solution(lst):
    watered_yesterday = None
    height = 1
    for watered in lst:
        if watered:
            if watered_yesterday:
                height += 5
                _hy_anon_var_1 = None
            else:
                height += 1
                _hy_anon_var_1 = None
            _hy_anon_var_3 = _hy_anon_var_1
        else:
            if not watered_yesterday is None and (not watered_yesterday):
                return -1
                _hy_anon_var_2 = None
            else:
                _hy_anon_var_2 = None
            _hy_anon_var_3 = _hy_anon_var_2
        watered_yesterday = watered
    return height
if __name__ == '__main__':
    import sys

    def _hy_anon_var_4(*_hyx_GXUffffX26):
        t = int(input())
        for _ in range(t):
            n = int(input())
            lst = list(map(int, input().split()))
            print(solution(lst))
    _hyx_GXUffffX25 = _hy_anon_var_4(*sys.argv)
    _hy_anon_var_5 = sys.exit(_hyx_GXUffffX25) if isinstance(_hyx_GXUffffX25, int) else None
else:
    _hy_anon_var_5 = None

Solution (Python):
t = int(input())
for _ in range(t):
    n = int(input())
    heights = list(map(int, input().split()))
    flower_height = 1
    prev_watered = 0
    for i in range(n):
        if heights[i] == 1:
            if prev_watered == 1:
                flower_height += 5
            else:
                flower_height += 1
            prev_watered = 1
        else:
            prev_watered = 0
        if prev_watered == 0 and i > 0 and (heights[i - 1] == 0):
            print(-1)
            break
    else:
        print(flower_height)