Begin forwarded message:

> From: "harlan@UGEN" <harlan / ugenmedia.com>
> Date: July 17, 2007 10:52:59 AM CDT
> To: submission / rubyquiz.com
> Subject: Please Forward: Ruby Quiz Submission
>
> Quiz 131 Solution   by harlan
> #!/usr/local/bin/ruby -w
>
> # RubyQuiz #131 Submission
> # Maximum Sub-Array
> # O(n)
> # by hrln
>
> if __FILE__==$0:
>   if ARGV.empty?
>     puts %(usage:: $ruby max_sub_array.rb 1 -2 3 -4 5 -6 ...);  
> Kernel.exit
>   else
>     arr = ARGV.map{|n| n.to_i}
>     #arr = [-1, -2, 3, 5, 6, -2, -1, 4, 0, 0, 1]
>   end
>
>   max_b, max_e, max_s, tmp_b, tmp_e, tmp_s, neg_s = [0]*7
>
>   arr.each_with_index do |el, i|
>     if el <= 0
>       tmp_e = i
>       neg_s += el
>     elsif el > 0
>       if neg_s <= 0
>         if el + neg_s > 0
>           tmp_s += el + neg_s
>           tmp_e, neg_s = i, 0
>           max_b, max_e, max_s = tmp_s > max_s ? [tmp_b, tmp_e,  
> tmp_s] : [max_b, max_e, max_s]
>         else
>           max_b, max_e, max_s = tmp_s > max_s ? [tmp_b, tmp_e,  
> tmp_s] : [max_b, max_e, max_s]
>           tmp_b, tmp_e, tmp_s, neg_s = [i, nil, 0, 0]
>         end
>       else
>         tmp_s += el
>         tmp_e = i
>       end
>     end
>   end
>
>   puts arr[max_b..max_e].inspect
> end