알고리즘/백준

4307>개미

Diademata 2017. 6. 29. 16:22
반응형

최근에 면접 본 부산의 중견급 실기 전형에 나왔던 문제다. 평소에 공부 안한 나를 반성하며 문제를 풀어보았다.


https://www.acmicpc.net/problem/4307


문제

개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된다면, 방향을 반대로 바꾸어 걸어가게 된다.


가장 처음에 막대 상에서 개미의 위치를 알고 있다. 하지만, 개미가 어느 방향으로 움직이는 지는 알 수가 없다. 이 때, 모든 개미가 땅으로 떨어질 때까지 가능한 시간 중 가장 빠른 시간과 느린 시간을 구하는 프로그램을 작성하시오.


입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 막대의 길이와 개미의 수 n이 주어진다. 다음 n개 줄에는 숫자가 하나씩 주어지며, 이 숫자는 개미의 초기 위치를 나타낸다. 개미의 위치는 1000000보다 작거나 같으며, 공백으로 구분되어져 있다. 


code>>


#include<iostream>

#include <algorithm>

int main()

{

std::ios::ios_base::sync_with_stdio(false);

int t;

std::cin >> t;

while (t-- > 0)

{

int early = 0, late = 0, input, dis, count;

std::cin >> dis >> count;

for (int i = 0; i < count; i++)

{

std::cin >> input;

early = std::max(early, std::min(dis - input, input));

late = std::max(late, std::max(dis - input, input));

}

printf("%d %d\n", early, late);

}

return 0;

}

반응형