```cpp
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const int MAX_N = 1e5 + 9;
int C[MAX_N], a[MAX_N];
int n, w;
long long sum = 0;
int lowbit(int x)
{
return x & (-x);
}
int getsum(int x)
{
int res = 0;
for(; x; x -= lowbit(x))
{
res += C[x];
}
return res;
}
void change(int x, int c)
{
for(;x <= n; x += x & (-x))
{
C[x] += c;
}
}
void init()
{
cin >> n >> w;
for(int i = 1; i <= n; i++)
{
int x, y;
cin >> x >> y;
change(x, y);
a[i] = x;
sum += y;
}
}
int maxx(int x, int y)
{
if(x > y)
return x;
return y;
}
int main() {
init();
long long h = -1;
sort(a + 1, a + n + 1);
for(int i = 1; i <= n; i++)
{
if(a[i] >= w && w != 0)
{
h = maxx(h, getsum(a[i]) - getsum(a[i] - w));
}
}
if(w == 0)
{
h = sum;
}
cout << h << endl;
return 0;
}
```
by dlstxdy @ 2018-09-24 17:12:02
我是加了特判的啊
by dlstxdy @ 2018-09-24 17:12:59
你再特判第一组数据就应该可以过了
by Clever_Jimmy @ 2018-09-24 17:13:36
话说为什么在这道题的讨论里面?
by Clever_Jimmy @ 2018-09-24 17:14:15
@[Clever_Jimmy](/space/show?uid=78407) 不会切换啊
by dlstxdy @ 2018-09-24 17:23:17
而且数据下不了
by dlstxdy @ 2018-09-24 17:24:26