#P3387. [Usaco2004 Dec]Fence Obstacle Course栅栏行动

[Usaco2004 Dec]Fence Obstacle Course栅栏行动

问题描述

约翰建造了 N(1N50000) N ( 1 \leq N \leq 50000) 个栅栏供奶牛娱乐。第 i 个栅栏的 z 坐标为 [Ai,Bi][A_i, B_i] (100000Ai<Bi100000)( -100000 \leq A_i < B_i \leq 100000),栅栏的 yy 坐标为 ii。奶牛们最初位于 (S,N)(S, N),她们需要返回牛棚的门(即原点 (0,0)(0, 0))。下图中用“*”表示奶牛的位置。 约翰原本的设想是让奶牛们练习跳跃,但奶牛们更愿意慢慢沿着栅栏行走。当奶牛们走到栅栏的尽头时,她们会朝牛棚的外栏方向(即 yy 轴负方向)行走,直到遇到另一条栅栏或牛棚外栏。这时,她们必须选择向左或向右继续行走。奶牛们希望走的路程最短。你需要计算奶牛在 zz 方向走的最短路程,使她们能返回原点。

输入格式

  • 第 1 行包含两个整数 N N S S ,表示栅栏的数量和奶牛的初始 zz 坐标位置。 (100000S100000)(-100000 \leq S \leq 100000)
  • 接下来 NN 行,每行包含两个整数 AiA_iBi B_i,表示第 ii 个栅栏的 zz 坐标范围。 (100000Ai<Bi100000)(-100000 \leq A_i < B_i \leq 100000)

输出格式

输出奶牛返回原点所需的最短 z 方向步数。

示例

4 0
-2 1
-1 2
-3 0
-2 1
4