Pick the longest stick
Ruby, 83 75 68 66 63 bytes

f=-&gt;m{m[b=c=i=0].map{(c=i;b-=1)while(r=m[b-2])&amp;&amp;r[i]&gt;0;i+=1};c}


Defines a function f which takes the 2D array form as input.


   I'm starting at the bottom left, keeping track of maximum stick length (actually, minus that) and the corresponding column. In each column, if there are still 1s above the previous maximum stick length, I walk up the stick to the end and remember the new maximum length and column. That means that I'm iterating once along the columns and at most once along the rows (specifically I'm iterating as far as the maximum stick length), which is precisely O(m+n).