比赛 |
EYOI与SBOI开学欢乐赛1st |
评测结果 |
AAAAAAAAAA |
题目名称 |
双倍腹肌量 |
最终得分 |
100 |
用户昵称 |
lavey |
运行时间 |
0.956 s |
代码语言 |
C++ |
内存使用 |
4.36 MiB |
提交时间 |
2022-08-29 22:14:45 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m;
//int x[200000],t[200000];
struct node{
int x,t;
}d[200000];
bool cmp(node y,node z)
{
return y.x<z.x;
}
priority_queue<pair<int,int>> f,g;
int ans=0x3f3f3f3f;
int main(){
freopen("double_muscle.in","r",stdin);
freopen("double_muscle.out","w",stdout);
cin>>n>>m;
for(int q=1;q<=n;q++) cin>>d[q].x>>d[q].t;
sort(d+1,d+n+1,cmp);
for(int q=1;q<=n;q++)
{
//大根堆
while(f.size()&&f.top().first-d[q].t>=m)
{
ans=min(ans,d[q].x-f.top().second);
f.pop();
}
//小根堆
while(g.size()&&d[q].t-(-g.top().first)>=m)
{
ans=min(ans,d[q].x-g.top().second);
g.pop();
}
f.push({d[q].t,d[q].x});
g.push({-d[q].t,d[q].x});
}
//for(int q=1;q<=n;q++)
//{
// for(int w=q+1;w<=n;w++)
// {
// if(d[w].t-d[q].t>=m) ans=min(ans,abs(d[q].x-d[w].x));
// }
//}
cout<<ans;
return 0;
}