[POJ] Ants

http://poj.org/problem?id=1852

蚁书的第一道POJ题目, 我刚开始陷入了如何求最大时间的陷阱上, 实际上, 两蚂蚁相遇后返回都掉下去的时间是和他们各自朝离自己最远的一端走然后掉下去的时间是一样的.

 1 #include <algorithm>
 2 #include <cstdio>
 3 #include <queue>
 4 #include <vector>
 5 #include <cstring>
 6 #include <set>
 7 #include <string>
 8 using namespace std;
 9 
10 #define MAX_NUM 1000001
11 
12 int arr[MAX_NUM] = {0};
13 int num = 0;
14 int n = 0;
15 int L = 0;
16 
17 float abs(float n) 
18 {
19     return (n >= 0 ? n : -n);
20 }
21 
22 void solve()
23 {
24     float h = L / 2.0;
25     int minindex = 0;
26     int maxindex = 0;
27     for (int i = 1; i < n; ++i) {
28         if (abs(arr[i] - h) > abs(arr[maxindex] - h)) {
29             maxindex = i;
30         }
31         if (abs(arr[i] - h) < abs(arr[minindex] - h)) {
32             minindex = i;
33         }
34     }
35     if (arr[minindex] >= h) {
36         printf("%d ", L - arr[minindex]);
37     } else {
38         printf("%d ", arr[minindex]);
39     }
40     if (arr[maxindex] >= h) {
41         printf("%d\n", arr[maxindex]);
42     } else {
43         printf("%d\n", L - arr[maxindex]);
44     }
45 }
46 
47 int main()
48 {    
49     scanf("%d", &num);
50     for (int i = 0; i < num; ++i) {
51         scanf("%d%d", &L, &n);
52         memset(arr, 0, MAX_NUM);
53         for (int j = 0; j < n; ++j) {
54             scanf("%d", &arr[j]);
55         }
56         solve();
57     }
58     return 0;
59 }

 

posted @ 2013-11-05 22:49  NextLife  阅读(211)  评论(0)    收藏  举报