<?php
function getWaterVolume
(array $landscape) {
$maxLeft = 0;
$maxRight = 0;
for ($i = 0; $i < count($landscape); $i++) { $maxLeft = max($maxLeft, $landscape[$i]); $lefts[$i] = $maxLeft;
}
for ($i = count($landscape) - 1; $i >= 0; $i--) { $maxRight = max($maxRight, $landscape[$i]); $rights[$i] = $maxRight;
$water[$i] = min($rights[$i], $lefts[$i]) - $landscape[$i]; }
}
array(0, 5, 0, 1, 0, 2, 0), array(0, 5, 4, 3, 3, 2, 0), array(2, 5, 1, 2, 3, 4, 7, 7, 6) );
foreach ($inputs as $landscape) {
echo implode(", ", $landscape).' → '.getWaterVolume
($landscape)."\n"; }
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgpmdW5jdGlvbiBnZXRXYXRlclZvbHVtZShhcnJheSAkbGFuZHNjYXBlKQp7CiAgICAkbGVmdHMgPSBhcnJheSgpOwogICAgJHJpZ2h0cyA9IGFycmF5KCk7CiAgICAkd2F0ZXIgPSBhcnJheSgpOwoKICAgICRtYXhMZWZ0ID0gMDsKICAgICRtYXhSaWdodCA9IDA7CgogICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGxhbmRzY2FwZSk7ICRpKyspIHsKICAgIAkkbWF4TGVmdCA9IG1heCgkbWF4TGVmdCwgJGxhbmRzY2FwZVskaV0pOwogICAgICAgICRsZWZ0c1skaV0gPSAkbWF4TGVmdDsKICAgIH0KCiAgICBmb3IgKCRpID0gY291bnQoJGxhbmRzY2FwZSkgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgJG1heFJpZ2h0ID0gbWF4KCRtYXhSaWdodCwgJGxhbmRzY2FwZVskaV0pOwogICAgICAgICRyaWdodHNbJGldID0gJG1heFJpZ2h0OwogICAgICAgICR3YXRlclskaV0gPSBtaW4oJHJpZ2h0c1skaV0sICRsZWZ0c1skaV0pIC0gJGxhbmRzY2FwZVskaV07CiAgICB9CiAgICAKICAgIHJldHVybiBhcnJheV9zdW0oJHdhdGVyKTsKfQoKJGlucHV0cyA9IGFycmF5KAoJYXJyYXkoMCwgNSwgMCwgMSwgMCwgMiwgMCksCglhcnJheSgwLCA1LCA0LCAzLCAzLCAyLCAwKSwKCWFycmF5KDIsIDUsIDEsIDIsIDMsIDQsIDcsIDcsIDYpCik7Cgpmb3JlYWNoICgkaW5wdXRzIGFzICRsYW5kc2NhcGUpIHsKCWVjaG8gaW1wbG9kZSgiLCAiLCAkbGFuZHNjYXBlKS4nIOKGkiAnLmdldFdhdGVyVm9sdW1lKCRsYW5kc2NhcGUpLiJcbiI7Cn0KCg==
0, 5, 0, 1, 0, 2, 0 → 5
0, 5, 4, 3, 3, 2, 0 → 0
2, 5, 1, 2, 3, 4, 7, 7, 6 → 10