水_CF_567A

来源:互联网 发布:php页面自动跳转代码 编辑:程序博客网 时间:2024/04/30 05:25

题意很简单就是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;}
0 0
原创粉丝点击