사람들이 최소 거리를 최대로, 그다음 최대 거리를 최대로, 그다음 왼쪽부터라는 규칙으로 좌변기에 자리를 고를 때, N이 10^18까지 커질 수 있는 상황에서 마지막 사람이 고른 자리의 최대 거리와 최소 거리를 구한다.
보통7힙그리디수학구현면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB어떤 화장실에는 한 줄로 늘어선 칸이 N + 2개 있다. 양쪽 끝 두 칸은 화장실 관리인이 늘 쓰고 있어 언제나 사용 중이고, 나머지 N개가 이용자용이다.
화장실에 들어온 사람은 다른 사람과 최대한 멀리 떨어진 칸을 고른다. 헷갈리지 않도록 고르는 규칙은 다음과 같이 정해져 있다. 비어 있는 칸 S마다 값 두 개 LS와 RS를 구한다. LS는 S와 왼쪽으로 가장 가까운 사용 중인 칸 사이에 있는 빈 칸의 수이고, RS는 S와 오른쪽으로 가장 가까운 사용 중인 칸 사이에 있는 빈 칸의 수다. 그다음 min(LS,RS)가 가장 큰 칸만 남긴다. 그런 칸이 하나뿐이면 그 칸을 고르고, 여럿이면 그중에서 max(LS,RS)가 가장 큰 칸을 고른다. 그래도 여럿이 남으면 그중 가장 왼쪽 칸을 고른다.
이제 K명이 화장실에 들어온다. 앞사람이 칸을 고른 뒤에 다음 사람이 들어오고, 아무도 화장실을 떠나지 않는다.
마지막 사람이 칸 S를 골랐을 때 max(LS,RS)와 min(LS,RS)의 값을 구하라.
첫째 줄에 테스트 케이스의 수 T가 주어진다. 다음 T개 줄에 테스트 케이스가 한 줄에 하나씩 주어진다. 각 줄에는 위에서 설명한 정수 N과 K가 공백으로 구분되어 주어진다.
제한
각 테스트 케이스마다 Case #x: y z 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호, y는 마지막에 들어온 사람이 고른 칸 S의 max(LS,RS), z는 같은 칸의 min(LS,RS)다.
사용 중인 칸을 O, 빈 칸을 .로 적는다.
예제의 1번 케이스에서 첫 사람은 가운데 두 칸 중 왼쪽 칸을 써서 O.O..O가 된다. 이어서 두 번째이자 마지막 사람이 바로 오른쪽 칸을 쓰므로 한쪽에는 빈 칸이 1개 남고 다른 쪽에는 빈 칸이 없다.
2번 케이스에서 첫 사람은 한가운데 칸을 써서 O..O..O가 된다. 두 번째이자 마지막 사람은 가장 왼쪽 칸을 쓴다.
3번 케이스에서 첫 사람은 가운데 두 칸 중 왼쪽 칸을 써서 O..O...O가 된다. 두 번째 사람은 연속한 빈 칸 세 개의 한가운데를 쓴다.
4번 케이스에서는 누가 어느 칸을 고르든 마지막에는 모든 칸이 사용 중이다.
5번 케이스에서 한 명뿐인 사람은 가운데 두 칸 중 왼쪽 칸을 쓴다.