que = Queue.new
arr = (1..10).to_a.shuffle
start = Time.now
sorted = false
m = 0
until sorted do
m += 1
arr.each{ |n| Thread.start{ sleep(n*m/1.0e3); que << n } }
sorted = (1..arr.size).map{ que.pop }.each_cons(2).all?{ |x,y| x <= y }
print "m = #{m}; time(sec) = #{Time.now - start}; sorted? = #{sorted}\n"
end
cXVlID0gUXVldWUubmV3CmFyciA9ICgxLi4xMCkudG9fYS5zaHVmZmxlCnN0YXJ0ID0gVGltZS5ub3cKc29ydGVkID0gZmFsc2UKbSA9IDAKdW50aWwgc29ydGVkIGRvCiAgIG0gKz0gMQogICBhcnIuZWFjaHsgfG58IFRocmVhZC5zdGFydHsgc2xlZXAobiptLzEuMGUzKTsgcXVlIDw8IG4gfSB9CiAgIHNvcnRlZCA9ICgxLi5hcnIuc2l6ZSkubWFweyBxdWUucG9wIH0uZWFjaF9jb25zKDIpLmFsbD97IHx4LHl8IHggPD0geSB9CiAgIHByaW50ICJtID0gI3ttfTsgdGltZShzZWMpID0gI3tUaW1lLm5vdyAtIHN0YXJ0fTsgc29ydGVkPyA9ICN7c29ydGVkfVxuIgplbmQ=