题目传送门
题目给了一个数轴,数轴上有一些点会向两边中的任意一个方向运动,问出数轴的最小和最大的时间。
题目中说,两个点相遇便会掉头走,但是我们可以这样认为,因为两个点的速度是一样的,所以如果两个点相互遇到的话,我们可以将它当做互相不理睬直接穿过对方,那么这题他答案也就出来了,在向左和向右中选择最大/最小的时间。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
#define Clear(a,x) memset(a,x,sizeof(a))
#define ll long long
#define INF 2000000000
#define eps 1e-8
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while (ch<'0'||ch>'9') f=ch=='-'?-1:f,ch=getchar();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
const int maxn=5005;
int L,n;
int x[maxn];
int main(){
L=read();
n=read();
rep(i,1,n) x[i]=read();
int Min=0,Max=0;
rep(i,1,n){
Min=max(Min,min(x[i],L-x[i]+1));
Max=max(Max,max(x[i],L-x[i]+1));
}
printf("%d %d\n",Min,Max);
return 0;
}