郭老师每周都要苦思冥想给大家出课程的测试题目,有一天他在高速路上开车发现,高速路上有很多的收费站,但每相邻的两个收费站之间的距离不太一样,有的距离长,有的距离短,所以他想找到间隔最长的两个相邻收费站之间的距离是多少。
假设每个收费站都有个正整数的编号,其表示当前的收费站距高速路起点的距离,但由于某些收费站间距离太近,所以使用了同一个编号,现在想请大家帮忙写程序计算相邻的两个收费站之间的最长距离是多少。
如某条高速路的收费站编号为 3 2 6 2 1(编号为随机顺序,并非收费站的地理位置顺序),那么收费站在高速路上出现的顺序为 1 2 2 3 6,因此我们可以得到相邻的两个收费站之间最长的距离为 3。
输入
输入的第一行 n 为一个正整数 ( 1 ≤ n ≤ 10000000),表示某条高速路收费站的数目。随后的 n 行为 n 个收费站的编号,范围为1~1000000的正整数。
输出
输出相邻的两个收费站之间的最长距离。当仅有一个收费站时,输入当前收费站编号。
#include<stdio.h>
int num[1000001] = { 0 };
int main()
{
int N, n, Max = 0, Min = 1000001, maxx = 0,j;
scanf("%d", &N);
for (int i = 0; i<N; i++)
{
scanf("%d", &n);
if (n > Max) Max = n;
if (n < Min) Min = n;
num[n]++;
}
if (N == 1)
{
printf("%d\n", n);
return 0;
}
for (int i = Min; i <= Max; i++)
{
if (num[i] > 0)
{
for ( j = i + 1; j <= Max; j++)
{
if (num[j] > 0)
{
if (j - i > maxx)
maxx = j - i;
i = j - 1;
break;
}
}
}
}
printf("%d\n", maxx);
return 0;
}