水_CF_567A
2015-08-06 10:31
260 查看
题意很简单就是x轴上一些点,然后叫你输出这个点与之最近和最远的距离长分别为什么
#include<iostream> #include<cstdio> #include<algorithm> #define Max(a,b) (a)>(b)?(a):(b) #define Min(a,b) (a)<(b)?(a):(b) const int maxn = 200010; using namespace std; struct node { int num,mx,mi,id; }; node dp[maxn]; int cmp1(node a, node b) { return a.num < b.num; } int cmp2(node a, node b) { return a.id < b.id; } int Abs(int x) { if(x<0)return -x; return x; } int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i = 0; i < n; i++) { scanf("%d",&dp[i].num); dp[i].id = i; } sort(dp, dp+n,cmp1); dp[0].mx = Abs(dp[n-1].num - dp[0].num); dp[0].mi = Abs(dp[1].num - dp[0].num); for(int i = 1; i < n-1; i++) { dp[i].mi = Min(Abs(dp[i-1].num-dp[i].num),Abs(dp[i+1].num-dp[i].num)); dp[i].mx = Max(Abs(dp[0].num-dp[i].num),Abs(dp[n-1].num-dp[i].num)); } dp[n-1].mx = dp[0].mx; dp[n-1].mi = Abs(dp[n-1].num - dp[n-2].num); sort(dp, dp+n,cmp2); for(int i = 0; i < n; i++) printf("%d %d\n",dp[i].mi, dp[i].mx); } return 0; }
相关文章推荐
- python自动化,读取文件夹内所有文件名字,并做简单的后缀名匹配
- 开发rtmp直播流测试地址
- 运行yum报错Error: Cannot retrieve metalink for reposit
- 南邮 OJ 1658 智力题
- JM代码修改默认配置文件.config
- http://blog.csdn.net/xiaanming/article/details/17483273
- Android 内核学习之三-----Power源码分析学习(3)
- MongoDB集群读优先策略
- CI 图片上传路径问题的解决
- 微软.NET序列化格式
- 选择排序小谈
- jquery 9种选择器
- shell脚本中切换用户执行相应的命令或者shell脚本的方法
- Zxing 生成条形码(一维码)
- git pull和git fetch的区别
- Android new File()初识(创建不出文件问题)
- WPF 后台读取样式文件
- 链表存储从文件读取的数据
- 8月初全球域名商(国际域名)解析量排行榜TOP20
- Code Forces 567 A. Lineland Mail(水~)