Water collected between towers: Difference between revisions
Content deleted Content added
Line 1,422: | Line 1,422: | ||
Water2 |
Water2 |
||
<lang M2000 Interpreter> |
<lang M2000 Interpreter> |
||
</lang> |
|||
===Faster Method=== |
|||
{{trans|AWK}} |
|||
<lang M2000 Interpreter> |
|||
Module Water3 { |
|||
Flush ' empty stack |
|||
Data (1, 5, 3, 7, 2) |
|||
Data (5, 3, 7, 2, 6, 4, 5, 9, 1, 2) |
|||
Data (2, 6, 3, 5, 2, 8, 1, 4, 2, 2, 5, 3, 5, 7, 4, 1) |
|||
Data (5, 5, 5, 5), (5, 6, 7, 8),(8, 7, 7, 6) |
|||
Data (6, 7, 10, 7, 6) |
|||
bars=stack.size ' mark stack frame |
|||
Dim bar() |
|||
for bar=1 to bars |
|||
bar()=Array ' pop an array from stack |
|||
acc=0 |
|||
n=len(bar())-1 |
|||
dim hl(n+1), hr(n+1) |
|||
For i=n to 0 |
|||
hr(i)=max.data(bar(i), if(i<n->hr(i+1), 0)) |
|||
Next i |
|||
For i=0 to n |
|||
hl(i)=max.data(bar(i), if(i>0->hl(i-1), 0)) |
|||
acc+=min.data(hl(i), hr(i))-bar(i) |
|||
Next i |
|||
Data acc ' push to end value |
|||
Next bar |
|||
finalwater=[] ' is a stack object |
|||
Print finalwater |
|||
} |
|||
Water3 |
|||
</lang> |
</lang> |
||