luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列
2024-09-05 19:01:01
刷水~
Code:
#include<bits/stdc++.h>
using namespace std;
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 300000
#define inf 1000000
deque<int>p,q;
struct Node
{
int x,y;
}nd[maxn];
bool cmp(Node a, Node b)
{
return a.x < b.x;
}
int main()
{
// setIO("input");
int n,D,ans=inf;
scanf("%d%d",&n,&D);
for(int i=1;i<=n;++i)
{
scanf("%d%d",&nd[i].x,&nd[i].y);
}
sort(nd+1,nd+1+n,cmp);
for(int i=1;i<=n;++i)
{
while(!p.empty()&&nd[i].y>=nd[p.back()].y) p.pop_back();
while(!q.empty()&&nd[i].y<=nd[q.back()].y) q.pop_back();
p.push_back(i), q.push_back(i);
int pre=0;
while(!p.empty()&&nd[p.front()].y-nd[i].y>=D) { pre=nd[p.front()].x; p.pop_front(); }
if(pre) ans=min(ans, nd[i].x - pre);
pre=0;
while(!q.empty()&&nd[i].y-nd[q.front()].y>=D) { pre=nd[q.front()].x; q.pop_front(); }
if(pre) ans=min(ans, nd[i].x - pre);
}
printf("%d\n",ans==inf?-1:ans);
return 0;
}
最新文章
- 手机GUI自动化测试工具选择
- windows10 网络热点
- VisualSVN Server和Subversion的联系
- STM32全球唯一ID读取方法
- Object Pascal 语法之异常处理
- 16道嵌入式C语言面试题
- flume 报File Channel transaction capacity cannot be greater than the capacity of the channel capacity错误
- hdu 4712 (随机算法)
- Android MAVEN项目标准目录结构
- JVM试用G1的垃圾收集器
- iOS之极光推送
- Kyoto Cabinet--nosql型单机数据库
- ECMAScript 6 入门 ----Generator 函数
- Spring-Boot配置文件web性能(服务器)配置项
- Y1O001波分复用器
- 如何入门vue之一
- Mac配置Node.js环境
- laravel框架数据迁移
- mysql_变量
- oracle修改内存使用和性能调节,SGA