上次比完赛就准备写了, 结果懒癌发作了, 拖到了现在。

Problem_A:

题意:

  在一条x轴上有n座城市, 每个城市之间的距离就是它们对应坐标的距离, 现在求出每个城市到其他城市的最近距离和最远距离。

 

思路:

  最远的必然在最左右端点产生, 因为没有比它们还远的城市了。

  最近的必然在相邻左右端点产生,因为有没比它们还近的城市了。

  比较下即可, 注意处理最左右端点时的情况。

 

代码:

  

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <ctime>
 6 #include <set>
 7 #include <map>
 8 #include <list>
 9 #include <queue>
10 #include <string>
11 #include <vector>
12 #include <fstream>
13 #include <iterator>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 #define LL long long
18 #define INF 0x3f3f3f3f
19 #define MOD 1000000007
20 #define eps 1e-6
21 #define MAXN 100010
22 #define dd cout<<"debug"<<endl
23 #define p(x) cout<<x<<endl
24 int n;
25 int x[MAXN];
26 
27 int main()
28 {
29     scanf("%d", &n);
30     for(int i = 0; i < n; i ++)
31         scanf("%d", &x[i]);
32     for(int i = 0; i < n; i ++)
33     {
34         if(i == 0)
35             printf("%d ", x[i + 1] - x[i]);
36         else if(i == n - 1)
37             printf("%d ", x[i] - x[i- 1]);
38         else 
39             printf("%d ", min(x[i] - x[i - 1], x[i + 1] - x[i]));
40 
41         if(i == n - 1)
42             printf("%d\n", x[i] - x[0]);
43         else if(i == 0)
44             printf("%d\n", x[n - 1] - x[i]);
45         else 
46             printf("%d\n", max(x[i] - x[0], x[n - 1] - x[i]));
47     }
48     return 0;
49 }
View Code

相关文章:

  • 2021-08-26
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2021-08-12
  • 2021-04-24
猜你喜欢
  • 2021-06-13
  • 2022-12-23
  • 2021-08-06
  • 2021-07-31
  • 2022-12-23
  • 2022-01-28
相关资源
相似解决方案