[编程题-蘑菇街] 最大间隔

[编程题] 最大间隔

给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?

输入描述:
第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
输出描述:
输出答案。
输入例子:
51 2 3 7 8
输出例子:
4
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        vector<int> a(n);
        for(int i=0;i<n;i++)
            cin>>a[i];
        vector<int> b(n-1);
        for(int i=0;i<n-1;i++)
            b[i]=a[i+1]-a[i];
        vector<int> c=b;
        sort(c.begin(),c.end());
        if(c[n-2]==b[0] || c[n-2]==b[n-2])
            cout<<c[n-3]<<endl;
        else
            cout<<c[n-2]<<endl;
    }
    return 0;
}
时间: 2024-08-01 22:46:16

[编程题-蘑菇街] 最大间隔的相关文章

[编程题-蘑菇街]搬圆桌

[编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 #include<iostream> #include<cmath> #include

[编程题-蘑菇街]回文串

[编程题] 回文串 给定一个字符串,问是否能通过添加一个字母将其变为回文串. 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10. 输出描述: 输出答案(YES\NO). 输入例子: coco 输出例子: YES #include<iostream> #include<string> using namespace std; bool f(string& s, int i) { int l = 0, r = s.size() - 1; if (l == i)

[编程题-蘑菇街]聊天

[编程题] 聊天 A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ].B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间.这些时间包括了边界点.B的起床时间为[l,r]的一个时刻.若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间? 输入描述: 第一行数据四个整数:p,q,l,r(1≤p,q≤50,0≤l≤r≤1000).接下来p行数据每一行有一对整数ai,

2016蘑菇街编程题:最大间隔

题目描述 给定一个递增序列,a1 <a2 <...<an .定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2,a3 ..an-1 中删除一个元素.问剩余序列的最大间隔最小是多少? 输入描述: 第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列. 输出描述: 输出答案. 输入例子: 51 2 3 7 8 输出例子: 4解题 当删除元素在原数组的最大间隔的两个元素时候最大间隔增大,当在

[编程题-蘑菇街] 投篮游戏

有一个投篮游戏.球场有p个篮筐,编号为0,1...,p-1.每个篮筐下有个袋子,每个袋子最多装一个篮球.有n个篮球,每个球编号xi .规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里.若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完.输出-1.问游戏最终的输出是什么? 输入描述: 第一行两个整数p,n(2≤p,n≤300).p为篮筐数,n为篮球数.接着n行为篮球上的数字xi(0≤xi≤1e9) 输出描述: 输出游戏的结果 输入例子: 10 5021534153 输出例子:

蘑菇街2016研发工程师在线编程题

传送门 第一题: [编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 题解转自:ixiaomo 思路很简单,千万别想复杂了 无论圆桌如何移动,都必须在圆

POJ C程序设计进阶 编程题#3:运算符判定

编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个整数 a 和 b 运算后得到结果 c.表示为:a ? b = c,其中,?可能是加法 +,减法 -,乘法 *,整除 / 或 取余 %.请根据输入的 a,b,c 的值,确定运算符.如果某种运算成立,则输出相应的运算符,如果任何运算都不成立,则输出 error. 例如: 输入: 3,4,5 输出: er

POJ C程序设计进阶 编程题#1:含k个3的数

编程题#1:含k个3的数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入二个正整数m 和 k,其中1 < m < 100000,1 < k <5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO. 例如,输入: 43833 3 满足条件,输出YES 如果输入 39331 3 尽管有3个3,但不能被19整除,也不满足条

POJ C程序设计进阶 编程题#1:计算矩阵边缘之和

编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 输入 第一行为整数k,表示有k组数据. 每组数据有多行组成,表示一个矩阵: 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔. 接下