题目大意:
注释代码:
/*
* Problem ID : POJ 1852 Ants
* Author : Lirx.t.Una
* Language : C
* Run Time : 141 ms
* Run Memory : 156 KB
*/
#include <stdio.h>
//无穷大>杆子的最大长度即可
#define INF 1000001
#define MAX(x,y) ( (x) > (y) ? (x) : (y) )
#define MIN(x,y) ( (x) < (y) ? (x) : (y) )
int
main() {
int t;//测例数
int l;//杆子的长度
int n;//蚂蚁的数量
int x;//每只蚂蚁在杆上的位置
int t_min, t_max;//全部掉下杆的最短时间和最长时间
scanf("%d", &t);
while ( t-- ) {
scanf("%d%d", &l, &n);
t_min = -1;
t_max = -1;
//可以看成蚂蚁碰头后没有反向而直接穿过对方继续向前进
//因此最长时间就是每只蚂蚁都朝离其较远的杆端方向前进,取其中最大值
//最短时间则是让每只蚂蚁都朝较近端方向走,由于结果是按照最后一只蚂蚁落地算的
//因此取其中的最大值
while ( n-- ) {
scanf("%d", &x);
t_min = MAX( t_min, MIN( x, l - x ) );
t_max = MAX( t_max, MAX( x, l - x ) );
}
printf("%d %d\n", t_min, t_max);
}
return 0;
}
无注释代码:
#include <stdio.h>
#define INF 1000001
#define MAX(x,y) ( (x) > (y) ? (x) : (y) )
#define MIN(x,y) ( (x) < (y) ? (x) : (y) )
int
main() {
int t;
int l;
int n;
int x;
int t_min, t_max;
scanf("%d", &t);
while ( t-- ) {
scanf("%d%d", &l, &n);
t_min = -1;
t_max = -1;
while ( n-- ) {
scanf("%d", &x);
t_min = MAX( t_min, MIN( x, l - x ) );
t_max = MAX( t_max, MAX( x, l - x ) );
}
printf("%d %d\n", t_min, t_max);
}
return 0;
}
单词解释: