uva 10714 Ants

本文介绍了一个计算问题:在一条线上有若干只蚂蚁,需要计算这些蚂蚁从当前位置移动到线两端的最短距离与最大距离。通过算法实现,首先找到距离中点最近的蚂蚁以确定最短距离,然后找到距离线端最远的蚂蚁来确定最大距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最短距离就是,找到距离n/2最近的那个数,算出其距离左边或右边更近的那个距离。

最大距离就是,距离边缘最近的那个数,算出其距离左边或右边更远的那个距离。

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int length,antNum;
        cin>>length>>antNum;
        int flag=length/2;
        int min=0,max=0;
        while(antNum--)
        {
            int x;
            cin>>x;
            if(abs(x-flag)<abs(min-flag))
                min=x;
            if((length-x)>max)
                max=length-x;
            else if(x>max)
                max=x;
        }
        if(min>=flag) min=length-min;
        cout<<min<<" "<<max<<endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值