fork download
  1. def mex(triplet):
  2. s = set(triplet)
  3. for i in range(5):
  4. if i not in s:
  5. return i
  6. return 5 # Not really needed
  7.  
  8. def is_good(triplet):
  9. return mex(triplet) == max(triplet) - min(triplet)
  10.  
  11. def can_make_good(a):
  12. n = len(a)
  13. for i in range(n - 2):
  14. sub = [a[i], a[i + 1], a[i + 2]]
  15. if -1 not in sub:
  16. if not is_good(sub):
  17. return False
  18. else:
  19. ok = False
  20. for x in range(4):
  21. for y in range(4):
  22. for z in range(4):
  23. temp = sub[:]
  24. if temp[0] == -1:
  25. temp[0] = x
  26. if temp[1] == -1:
  27. temp[1] = y
  28. if temp[2] == -1:
  29. temp[2] = z
  30. if is_good(temp):
  31. ok = True
  32. break
  33. if ok:
  34. break
  35. if ok:
  36. break
  37. if not ok:
  38. return False
  39. return True
  40.  
  41. def solve():
  42. n = int(input())
  43. a = list(map(int, input().split()))
  44. print("yes" if can_make_good(a) else "no")
  45.  
  46. # Driver
  47. if __name__ == "__main__":
  48. t = int(input())
  49. for _ in range(t):
  50. solve()
  51.  
Success #stdin #stdout 0.13s 14088KB
stdin
8
3
-1 -1 -1
5
1 1 1 1 0
6
5 5 1 -1 -1 1
4
-1 -1 0 -1
4
-1 1 1 -1
3
3 3 -1
5
0 0 0 0 0
7
3 0 1 4 -1 2 3
stdout
yes
no
no
no
yes
yes
no
no