Bei gegebener Reihenfolge $ A_1, A_2, A_3, ..., A_N $. Diese Zahlenfolge kann negative Elemente enthalten. Der Roboter an der Koordinate $ 0 $ in der Zahlenreihe führt die folgenden Operationen der Reihe nach aus.
Gehe vorwärts $ A_1 $ in die positive Richtung. Schieben Sie $ A_1 $ in die positive Richtung und $ A_2 $ in die positive Richtung. Leiten Sie $ A_1 $ in die positive Richtung, $ A_2 $ in die positive Richtung und $ A_3 $ in die positive Richtung weiter. ⋮ Weiterleiten von $ A_1 $ in die positive Richtung, $ A_2 $ in die positive Richtung, $ A_3 $ in die positive Richtung, $ ... $, $ A_N $ in die positive Richtung.
Ermitteln Sie den Maximalwert der Roboterkoordinaten vom Beginn bis zum Ende der Operation.
1≦N≦200000 -10^8≦A_i≦10^8 Alle Eingaben sind Ganzzahlen
N A_1 A_2 A_3 ... A_N
n = gets.chomp.to_i
a = gets.chomp.split.map(&:to_i)
#Koordinaten des Roboters nach dem Betrieb
position = 0
#Bewegungsumfang aufgrund von Bewegung
total_move = 0
#Maximalwert der Koordinaten von Anfang bis Ende, wenn die Operation bei Koordinate 0 beginnt
max_move = 0
#Maximalwert der Roboterkoordinaten
max_pos = 0
a.each do |move|
total_move += move
if total_move > max_move
max_move = total_move
end
if position + max_move > max_pos
max_pos = position + max_move
end
position += total_move
end
puts max_pos
Recommended Posts