题目描述
时间限制:1000ms 内存限制:256MB 提交通过率:49%
描述
一队蚂蚁在长度为 L 厘米的水平杆上行走,每个蚂蚁的前进速度恒定为 1 厘米/秒。
当一只行走的蚂蚁到最左端或者最右端时,它会立即从杆上掉下来。
当两只蚂蚁相遇时,它们会转身并开始向相反方向行走。(转身本身不花费时间)。
我们知道蚂蚁在杆子上的原始位置,不幸的是,我们不知道蚂蚁行走的方向。
你的任务是计算所有蚂蚁从杆上掉下来所需的最早和最晚时间。
输入
第一行包含两个正整数 L 和 N,表示水平杆的长度L(cm)和杆子上的蚂蚁总数 N。
第二行包含n个用空格隔开的整数,代表将杆上每只蚂蚁距离水平杆左端点的位置x[i]。
数据范围
1 <= L <= 10^6^, 1 <= n <= 10^6^, 1 <= x[i] <= L
输出
输出一行,包含两个整数,
分别代表所有蚂蚁从杆子上掉下来所需的最早时间和最晚时间。
两整数之间用空格隔开。
样例1
输入复制
10 3 2 5 7
输出
5 8
代码:
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
int main(){
int zao = 0,wan = 0,n,L,x;
cin >> L >> n;
while(n--){
cin >> x;
int duan,chang;
if(x<L-x){
duan = x;
chang = L - x;
}else{
duan = L - x;
chang = x;
}
if(duan > zao) zao = duan;
if(chang > wan) wan = chang;
}
cout << zao << " " << wan;
return 0;
}