output

standard output

A plane is flying at a constant height of hh meters above the ground surface. Let's consider that it is flying from the point (−109,h)(−109,h) to the point (109,h)(109,h) parallel with OxOx axis.

A glider is inside the plane, ready to start his flight at any moment (for the sake of simplicity let's consider that he may start only when the plane's coordinates are integers). After jumping from the plane, he will fly in the same direction as the plane, parallel to OxOx axis, covering a unit of distance every second. Naturally, he will also descend; thus his second coordinate will decrease by one unit every second.

There are ascending air flows on certain segments, each such segment is characterized by two numbers x1x1 and x2x2 (x1<x2x1<x2 ) representing its endpoints. No two segments share any common points. When the glider is inside one of such segments, he doesn't descend, so his second coordinate stays the same each second. The glider still flies along OxOx axis, covering one unit of distance every second.

If the glider jumps out at 1 , he will stop at 10 . Otherwise, if he jumps out at 2 , he will stop at 12 .

Determine the maximum distance along Ox axis from the point where the glider's flight starts to the point where his flight ends if the glider can choose any integer coordinate to jump from the plane and start his flight. After touching the ground the glider stops altogether, so he cannot glide through an ascending airflow segment if his second coordinate is 0 .

Input

The first line contains two integers nn and hh (1≤n≤2⋅105,1≤h≤109)(1≤n≤2⋅105,1≤h≤109)  — the number of ascending air flow segments and the altitude at which the plane is flying, respectively.

Each of the next nn lines contains two integers xi1xi1 and xi2xi2 (1≤xi1<xi2≤109)(1≤xi1<xi2≤109)  — the endpoints of the ii -th ascending air flow segment. No two segments intersect, and they are given in ascending order.

Output

Print one integer — the maximum distance along OxOx axis that the glider can fly from the point where he jumps off the plane to the point where he lands if he can start his flight at any integer coordinate.

Examples
Input

Copy
3 4
2 5
7 9
10 11
Output

Copy
10
Input

Copy
5 10
5 7
11 12
16 20
25 26
30 33
Output

Copy
18
Input

Copy
1 1000000000
1 1000000000
Output

Copy
1999999999
Note

In the first example if the glider can jump out at (2,4)(2,4) , then the landing point is (12,0)(12,0) , so the distance is 12−2=10 12−2=10 .

In the second example the glider can fly from (16,10)(16,10) to (34,0)(34,0) , and the distance is 34−16=18 34−16=18 .

In the third example the glider can fly from (−100,1000000000)(−100,1000000000) to (1999999899,0)(1999999899,0) , so the distance is 1999999899−(−100)=19999999991999999899−(−100)=1999999999 .

题意:给你n个无重力地带,飞机可以从高度h的任意位置开始滑行,问你最远能滑行多远。

思路:(orz做的时候想三分,结果wa了,经过网上题解的调教,原来二分就可以了)首先,我们肯定是从某个无重力地带开始滑行,但是挨个枚举肯定不行,然后就二分Orz

二分注重的就是个单调性,这题比较隐蔽,我们可以发现从左往右,价值越来越大(无重力地带的总长度是越来越长,免费长度,相当于白给),另外花费(两两无重力地带之间的区域,即飞机会下降的区域)也是随着右移越来越大,这样我们可以预处理价值和花费,注意cost【n】 = 2e9+1,因为最后一个无重力地带后面是无限长的。

这样,对于第一个起点,我们拥有高度h可以花费,也就是说找到第一个大于等于高度h的花费,可以用lowerbound;当然,但我们要想后枚举起点的时候h可以加上该起点之前的前缀和(毕竟终点要在起点之后,二分终点的时候加上起点前的值就相当于从该起点后查询)

#include<bits/stdc++.h>
using namespace std; int n,h;
const int maxn = 2e5+; int l[maxn];
int r[maxn]; int add[maxn];
int cost[maxn]; int main()
{
scanf("%d%d",&n,&h);
for(int i=;i<=n;i++)
{
scanf("%d%d",&l[i],&r[i]);
}
cost[n] = 2e9+;
for(int i=;i<n;i++)
{
cost[i] = cost[i-] + l[i+] - r[i];
add[i] = add[i-] + r[i] - l[i];
}
add[n] = add[n-] + r[n] - l[n];
int ans = ;
for(int i=;i<=n;i++)
{
int t = lower_bound(cost+,cost++n,cost[i-]+h)-cost;
ans = max(ans,add[t]-add[i-]+h);
}
printf("%d\n",ans);
}

B - Glider Gym - 101911B(二分)的更多相关文章

  1. Gym - 101911B Glider(前缀和+二分)

    传送门:点我 A plane is flying at a constant height of hh meters above the ground surface. Let's consider ...

  2. E.Text Editor (Gym 101466E + 二分 + kmp)

    题目链接:http://codeforces.com/gym/101466/problem/E 题目: 题意: 给你s串和t串,一个数k,求t的最长前缀串在s串中出现次数不少于k. 思路: 一眼二分+ ...

  3. Gym - 100989G 二分

    链接:ECJTU 2018 Summer Training 1 - Virtual Judge  https://vjudge.net/contest/236677#problem/G 谷歌翻译: 距 ...

  4. Gym - 101908G 二分答案+最大流

    After the end of the truck drivers' strike, you and the rest of Nlogônia logistics specialists now h ...

  5. Hacker Cups and Balls Gym - 101234A 二分+线段树

    题目:题目链接 题意:有编号从1到n的n个球和n个杯子. 每一个杯子里有一个球, 进行m次排序操作,每次操作给出l,r. 如果l<r,将[l,r]范围内的球按升序排序, 否则降序排, 问中间位置 ...

  6. Gym 102007I 二分 网络流

    题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可.我们还需要用二 ...

  7. G - 土耳其冰淇凌 Gym - 101194D(二分答案 + 贪心检验)

    熊猫先生非常喜欢冰淇淋,尤其是冰淇淋塔.一个冰淇淋塔由K个冰淇淋球堆叠成一个塔.为了使塔稳定,下面的冰淇淋球至少要有它上面的两倍大.换句话说,如果冰淇淋球从上到下的尺寸是A0, A1, A2,···, ...

  8. Gym - 100283F F. Bakkar In The Army —— 二分

    题目链接:http://codeforces.com/gym/100283/problem/F F. Bakkar In The Army time limit per test 2 seconds ...

  9. Gym 101064 D Black Hills golden jewels (二分)

    题目链接:http://codeforces.com/gym/101064/problem/D 问你两个数组合相加的第k大数是多少. 先sort数组,二分答案,然后判断其正确性(判断过程是枚举每个数然 ...

随机推荐

  1. [原著]java或者Js 代码逻辑来处理 突破 oracle sql “IN”长度的极限的问题

    注:本文出自:博主自己研究验证可行   [原著]java或者Js  代码逻辑来处理  突破 oracle  sql "IN"长度的极限的问题    在很多的时候 使用 select ...

  2. Confluence 6 查看空间活动

    空间活动信息是默认禁用(disabled by default)的.活动(Activity)的标没有显示,如果你的 Confluence Usage Stats  插件没有启用的.请查看下面的说明: ...

  3. iOS ibeacon 使用详解

    前段时间写项目,设计到了通过蓝牙ibeacon 的方式接收数据,最开始自己都之前都没听过什么叫ibeacon,然后就开始查资料,慢慢的也了解并知道了ibeacon怎么使用了.先大概解释下ibeacon ...

  4. Android UiAutomator

    UiAutomator是一个做UI测试的自动化框架.<Android自动化测试框架>中已有详细介绍,这里就不再累赘了. 一.首先了解自动化测试流程 自动化需求分析 测试用例设计 自动化框架 ...

  5. JS控制文本框内键盘上下左右键的焦点

    avaScript键盘上下左右控制文本框焦点的方法有很多,这里简单说两种方法: 方法一: 创建一个table的dom元素,包含5行4列的文本框 <!DOCTYPE HTML PUBLIC &qu ...

  6. 声明寄存器ROM

    :] ROM [:] ; integer i; initial begin ;i<=;i=i+) begin ROM[i] <= {{'b0}}; end end 同时可以考虑双端口ROM ...

  7. Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)

    Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数

  8. 爬虫框架之Scrapy

    一.介绍 二.安装 三.命令行工具 四.项目结构以及爬虫应用简介 五.Spiders 六.Selectors 七.Items 八.Item Pipelin 九. Dowloader Middeware ...

  9. PDF裁剪页面,PDF怎么裁剪页面的方法

    PDF文件要怎么裁剪页面呢,是不是有很多的小伙们想知道呢,当打开一个PDF文件的时候如果一个页面中有很多的空白页面就会影响文件的美观与使用,今天小编就为大家分享一下小编的裁剪页面的方法. 操作软件:迅 ...

  10. python(2): If/for/函数/try异常/调试/格式输出%

    (一) if  if a1==a2: print('ok') if:  else: if: elif: ... else:  注意缩进 猜数字游戏 from random import randint ...