NYOJ 971 爬行的蚂蚁

爬行的蚂蚁

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 2
描述
有N只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离杆子左端的距离Xi,但不知道它当前的朝向。请计算所有蚂蚁都从竿子上掉落所需的最短时间和最长时间。
输入
多组测试数据。
每组数据包含两行,第一行包含2个整数N、L。(1≤N,L≤10^6)。
接下来一行有N个整数Xi(0≤Xi≤L),Xi表示第i只蚂蚁距离竿子左端点的距离。
输出
每组数据输出两行,格式见样例。每两组数据之间输出一个换行。
样例输入
3 10 
2 6 7
6 100 
25 20 50 38 42 15
样例输出
The minimum time is: 4
The maximum time is: 8

The minimum time is: 50
The maximum time is: 85
解题关键:

maxT=max(maxT,max(d[i],L-d[i]));//寻找较大距离的最大为最长时间
minT=max(minT,min(d[i],L-d[i])); //寻找较小距离的最大为最短时间

(注意忽略掉蚂蚁的不同,不考虑相撞转向行为)

#include<stdio.h>
int max(int m,int n);
int min(int m,int n);
int d[90000];
int main()
{
	int N,L,i,maxT,minT;
	while(scanf("%d%d",&N,&L)!=-1)
	{
		i=0,maxT=0,minT=0;
		while(i<N)
		{
			scanf("%d",&d[i]);
			i++;
		}
		for(i=0;i<N;i++)
		{
			maxT=max(maxT,max(d[i],L-d[i]));
			minT=max(minT,min(d[i],L-d[i]));
			
		}
		printf("The minimum time is: %d\nThe maximum time is: %d\n\n",minT,maxT);
	}
	
	return 0;
}
int max(int m,int n)
{
	return m>n?m:n;
}
int min(int m,int n)
{
	return m<n?m:n;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值