题目链接:
https://vjudge.net/problem/UVA-10714
题目大意:
给你一个长为L厘米的木棍在上面有n只蚂蚁,蚂蚁的爬行时间均为1厘米/秒,两只蚂蚁先遇会立即调转方向,调转时间不久,并给出每只蚂蚁的位置x[i],问你所有蚂蚁都掉下木棍的最少时间和最长时间。
思路:
两只蚂蚁掉头和两只蚂蚁擦肩而过是等价的,所以问题就可以简化成所有蚂蚁掉下去的时间,而蚂蚁之间只会擦身而过,互不干扰。
最小时间就是所有蚂蚁掉下的最小时间中的最大值
最大时间就是所有蚂蚁掉下的最大时间中的最大值
#include<iostream>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#define FOR(i, a, b) for(int i = a; i < b; i++)
using namespace std;
const int INF = 1e9+;
int n, T, m;
int a[];
int main()
{
cin >> T;
while(T--)
{
cin >> n >> m;
for(int i = ; i < m; i++)cin >> a[i];
int ansmin = , ansmax = ;
for(int i = ; i < m; i++)
{
ansmin = max(ansmin, min(a[i], n - a[i]));
ansmax = max(ansmax, max(a[i], n - a[i]));
}
cout<<ansmin<<" "<<ansmax<<endl;
}
return ;
}