思路:士兵过独木桥,如果两个人相遇后两个人就互换位置,其实我们可以把其抽象出来,我们可以把士兵看成一个透明的人,因为相遇两者就换方向,那和一个人一直往前走没啥区别所以可以抽像出来,最短的时间是所有人中最短时间中最大的,同理最长的时间也是如此
#include <stdio.h>
int main()
{
int longs;//桥的长度
int peoples;//在桥上的人数
int place[80];//士兵的位置
int times1[80];//最短的时间
int x1 = 0;
//int x2 = 0;
int times2[80];//最长的时间
int i;
int max1;//最短时间最大值
int max2;//最长时间的最大值
scanf("%d",&longs);
scanf("%d",&peoples);
for(i = 0;i < peoples;i ++)
{
scanf("%d",&place[i]);
}
for(i = 0;i < peoples;i ++)
{
if(place[i] > longs + 1 - place[i])
{
times2[x1] = place[i];
times1[x1] = longs + 1 - place[i];
x1 ++;
}
else
{
times1[x1] = place[i];
times2[x1] = longs + 1 - place[i];
x1 ++;
}
}
//最短时间
max1 = times1[0];
for(i = 0;i < x1;i ++)
{
if(max1 < times1[i])
{
max1 = times1[i];
}
}
//最长时间
max2 = times2[0];
for(i = 0;i < x1;i ++)
{
if(max2 < times2[i])
{
max2 = times2[i];
}
}
printf("%d %d",max1,max2);
return 0;
}