上次比完赛就准备写了, 结果懒癌发作了, 拖到了现在。
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 }