0
点赞
收藏
分享

微信扫一扫

懒惰的牛(寒假每日一题 16)

这是一个炎热的夏日。

懒洋洋的奶牛贝茜想将自己放置在田野中的某个位置,以便可以在短距离内尽可能多地吃到美味的草。

贝茜所在的田野中共有 懒惰的牛(寒假每日一题 16)_每日一题 片草地,我们可以将田野视作一个一维数轴。

懒惰的牛(寒假每日一题 16)_#include_02 片草地中包含 懒惰的牛(寒假每日一题 16)_#include_03 单位的青草,位置坐标为 懒惰的牛(寒假每日一题 16)_c++_04

不同草地的位置不同。

贝茜想选取田野中的某个点作为她的初始位置(可能是某片草地所在的点)。

只有一片草地与她的初始位置的距离不超过 懒惰的牛(寒假每日一题 16)_#include_05 时,贝茜才能吃到那片草地上的草。

如果贝茜选择最佳初始位置,请确定她可以吃到的青草最大数量。

输入格式
第一行包含两个整数 懒惰的牛(寒假每日一题 16)_每日一题懒惰的牛(寒假每日一题 16)_#include_05

接下来 懒惰的牛(寒假每日一题 16)_每日一题 行,每行描述一片草地,包含两个整数 懒惰的牛(寒假每日一题 16)_#include_03懒惰的牛(寒假每日一题 16)_c++_04

输出格式
输出如果贝茜选择最佳初始位置,则她可以吃到的青草最大数量。

数据范围
懒惰的牛(寒假每日一题 16)_每日一题_11

输入样例:

4 3
4 7
10 15
2 2
5 1

输出样例:

11

样例解释
最佳初始位置选择为 懒惰的牛(寒假每日一题 16)_#define_12,可以吃到 懒惰的牛(寒假每日一题 16)_每日一题_13 处的青草。

#include<iostream>
#include<map>

#define x first
#define y second

using namespace std;

const int N = 100010;

int n, k;
int q[N];

int main(){

scanf("%d%d", &n, &k);

map<int, int> mp;

int g, x;
for(int i = 0; i < n; i++){

scanf("%d%d", &g, &x);
mp[x] = g;
}

int hh = 0, tt = -1;

int res = -1, sum = 0;

for(auto t: mp){

x = t.x, g = t.y;
q[++tt] = x;
sum += g;

while(hh <= tt && x - q[hh] > 2 * k) sum -= mp[q[hh]], hh++;

res = max(res, sum);
}

printf("%d\n", res);

return 0;
}


举报

相关推荐

0 条评论