您的位置:首页 > 其它

CodeForce 580D Kefa and Company贪心算法

2016-04-10 19:23 302 查看
从网上看到的方法,结合自己理解写出,确实值得学。

#include <cstdio>
#include <utility>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 10;

int main()
{
int n, d;
while (scanf("%d%d", &n, &d) != EOF)
{
pair<int, int>a[maxn];
for (int i = 0; i < n; i++)
{
int x, y;
scanf("%d%d", &x, &y);
a[i].first = x;
a[i].second = y;
}
sort(a, a + n);
__int64 ans = 0, cur = 0, st = 0;
for (int i = 0; i < n;)
{
if (a[i].first - a[st].first >= d)
{
cur -= a[st].second;
st++;
}
else
{
cur += a[i].second;
i++;
}
ans = max(ans, cur);
}
printf("%I64d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: