《挑战程序设计竞赛》1.6.2-POJ的题目Ants

#include <stdio.h>
#define max(a, b)    (((a) > (b)) ? (a) : (b)) 
#define min(a, b)    (((a) < (b)) ? (a) : (b))
#define MAX_N 1000000       
int main(void)
{
	int L, n, i;
	int x[MAX_N];
	
	scanf("%d %d", &L, &n);
	for (i = 0; i < n; i++)
		scanf("%d", &x[i]);
	
	// 计算最短时间	
	int minT = 0; 
	for (i = 0; i < n; i++)
		minT = max(minT, min(x[i], L - x[i]));
	
	// 计算最长时间
	int maxT = 0;
	for (i = 0; i < n; i++)
		maxT = max(maxT, max(x[i], L - x[i]));	
		
	printf("%d %d\n", minT, maxT);
	
	return 0;
}


    事实上,可以知道两只蚂蚁相遇后,当它们保持原样交错而过继续前进也不会有任何问题。这样看来,可以认为每只蚂蚁都是独立运动的,所以要求最长时间,只要求蚂蚁到竿子端点的最大距离就好了。

posted @ 2018-04-16 15:13  laugh12321  阅读(20)  评论(0编辑  收藏  举报