jzoj1792
2024-08-28 22:54:42
#include<bits/stdc++.h>
using namespace std;
long long a[100010],m,n;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
sort(a+1,a+n+1);
scanf("%lld",&m);
while(m--){
long long a1,b1,a2,b2;
scanf("%lld%lld%lld%lld",&a1,&b1,&a2,&b2);
if(a1>a2){
swap(a1,a2);
swap(b1,b2);
}
if((b1>0&&b2>0)||(b1<0&&b2<0))
printf("%lld\n",abs(a1-a2)+abs(b1-b2));
else{
int v=upper_bound(a+1,a+n+1,(a1+a2)/2)-a;
if(a[v]>=a1&&a[v]<=a2)
printf("%lld\n",abs(a1-a2)+abs(b1-b2));
else{
if(v!=1&&v!=n+1)v--;
int w=lower_bound(a+1,a+n+1,(a1+a2)/2)-a;
int c1=abs(b1-b2)+abs(a[w]-a1)+abs(a[w]-a2);
int c2=abs(b1-b2)+abs(a[w-1]-a1)+abs(a[w-1]-a2);
int c3=abs(b1-b2)+abs(a[w+1]-a1)+abs(a[w+1]-a2);
printf("%d\n",min(c1,min(c2,c3)));
}
}
}
}
zj:
在答案有误差时,可以对多种可能的答案取最小值来确定结果
最新文章
- NHibernate生成实体类、xml映射文件
- 用datagrid实现完整的一个页面
- 关于公司内部的Nuget服务
- Nginx 使用IP限制访问来源
- JAVA System.getProperty() 与 System.getenv() 差异及示例
- 使用网易ubuntu镜像加速软件包安装
- jenkins maven svn 部署web项目到本地Tomcat
- [转载]我读过最好的Epoll模型讲解
- HTML5新增的一些属性和功能之一
- SQLite笔记
- Struts(二十一):类型转换与复杂属性、集合属性配合使用
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决
- Snapde和Excel、PowerPivot、WPS打开超大CSV文件性能比较
- None.js 第六步 Stream(流)
- 基于TensorFlow的简单验证码识别
- imx6ul linux4.1.15 LED驱动配置及heartbeat源码分析【转】
- 【刷题】HDU 6183 Color it
- POJ 3468 A Simple Problem with Integers (splay tree入门)
- 两个值相等的Integer的==比较问题
- size和STL中的size_type