sweepline algorithm