/ 알고리즘

개미

알고리즘 for 문 개미 함수
https://4am.kr/-ea-b0-9c-eb-af-b8/

프로그램 명: ants

제한시간: 1 초
  ![ants](/content/images/2016/09/ants.jpg)

일련의 개미떼들이 길이가 L cm 인 수평 작대기를 걸어간다. 이 들은 각 초당 1 cm 의 속도로 걸어가고 있다.

개미떼들이 작대기의 끝지점에 도달 하면 그 들은 이 작대기에서 자유 낙하한다. 두 마리의 개미가 서로 만난다면 그들은 가는 방향을 바꾸어 반대 방향으로 걸어간다. 개미가 현재 있는 작대기의 위치를 알지만 우리는 개미가 걷는 방향을 알지는 못한다.

우리가 할 일은 모든 개미들이 작대기에서 자유낙하 할수 있는 최대 빠른 시간과 느린 시간을 구하는 것이다.

입력

첫 줄에는 두 개의 정수가 입력으로 주어진다. 첫 수는 작대기의 길이 이고 다른 하나는 개미의 수 n 이다. 다음 n 개의 수는 개미가 현재 위치하고 있는 위치이다.

입력의 모든 수는 1000000 이하의 정수이다.

출력

두 수를 출력한다. 첫 수는 제일 빠른 시간 , 가장 느린 시간이다.

입출력 예

입력 10 3 2 6 7 출력 4 8 입력 214 7 11 12 7 13 176 23 191 출력 38 207

출처: Waterloo local 2004.09.19

동적할당으로 배열에 넣어 풀려고 했는데, 이건 그렇게 푸는 문제가 아니었다.
그리고 이 문제에 말장난이 있다.

#include <iostream>
using namespace std;
int mx(int a, int b)
{
    if (a > b)
        return a;
    else
        return b;
}
int mn(int a, int b)
{
    if (a < b)
        return a;
    else
        return b;
}
int main()
{
    int ll, n, antmx = 0, antmn = 0, ant;
    cin >> ll >> n;
    for (int i = 0; i < n; i++) {
        cin >> ant;
        //느린 시간
        antmx = mx(antmx, mx(ll - ant, ant));
        //(최대!!!) 빠른 시간(말장난)
        antmn = mx(antmn, mn(ll - ant, ant));
    }
    cout << antmn << " " << antmx;
    return 0;
}