def candy(ratings):
n = len(ratings)
if n == 0:
return 0
# Step 1: Initialize candies array
candies = [1] * n
# Step 2: Left to right pass
for i in range(1, n):
if ratings[i] > ratings[i - 1]:
candies[i] = candies[i - 1] + 1
# Step 3: Right to left pass
for i in range(n - 2, -1, -1):
if ratings[i] > ratings[i + 1]:
candies[i] = max(candies[i], candies[i + 1] + 1)
# Step 4: Calculate total candies
return sum(candies)
# Example usage:
print(candy([1, 0, 2])) # Output: 5
print(candy([1, 2, 2])) # Output: 4
ZGVmIGNhbmR5KHJhdGluZ3MpOgogICAgbiA9IGxlbihyYXRpbmdzKQogICAgaWYgbiA9PSAwOgogICAgICAgIHJldHVybiAwCiAgICAKICAgICMgU3RlcCAxOiBJbml0aWFsaXplIGNhbmRpZXMgYXJyYXkKICAgIGNhbmRpZXMgPSBbMV0gKiBuCiAgICAKICAgICMgU3RlcCAyOiBMZWZ0IHRvIHJpZ2h0IHBhc3MKICAgIGZvciBpIGluIHJhbmdlKDEsIG4pOgogICAgICAgIGlmIHJhdGluZ3NbaV0gPiByYXRpbmdzW2kgLSAxXToKICAgICAgICAgICAgY2FuZGllc1tpXSA9IGNhbmRpZXNbaSAtIDFdICsgMQogICAgCiAgICAjIFN0ZXAgMzogUmlnaHQgdG8gbGVmdCBwYXNzCiAgICBmb3IgaSBpbiByYW5nZShuIC0gMiwgLTEsIC0xKToKICAgICAgICBpZiByYXRpbmdzW2ldID4gcmF0aW5nc1tpICsgMV06CiAgICAgICAgICAgIGNhbmRpZXNbaV0gPSBtYXgoY2FuZGllc1tpXSwgY2FuZGllc1tpICsgMV0gKyAxKQogICAgCiAgICAjIFN0ZXAgNDogQ2FsY3VsYXRlIHRvdGFsIGNhbmRpZXMKICAgIHJldHVybiBzdW0oY2FuZGllcykKCiMgRXhhbXBsZSB1c2FnZToKcHJpbnQoY2FuZHkoWzEsIDAsIDJdKSkgICMgT3V0cHV0OiA1CnByaW50KGNhbmR5KFsxLCAyLCAyXSkpICAjIE91dHB1dDogNA==
MgpzIHIgdCByIGQgcSBzCitob3IrKysrKysKK2FuZCtldCsrCit1c2QrK2UrKysKKysrYSsrK3IrKworaCsrKysrKysrCisrKysrKysrKysKKysrKysrKysrKworZHArdCsrKysrCisrK2hxKysrKysKKysrKysrKysrKwozLjY4OTc3IDAuOTIyNDMx
2
s r t r d q s
+hor++++++
+and+et++
+usd++e+++
+++a+++r++
+h++++++++
++++++++++
++++++++++
+dp+t+++++
+++hq+++++
++++++++++
3.68977 0.922431