만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

직사각형 나누기

면접 대비

시간 제한1초메모리 제한1024 MB

요약
a×b 크기의 보드를 k번 잘라 정확히 m개의 직사각형을 만드는 가로 자르기 수 h와 세로 자르기 수 v를 구합니다. 가로 자르기가 적은 답을 고르고, 가능한 방법이 없으면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
수학, 정수론
정답자
아직 제출이 없습니다

문제

아냐는 새 보드게임 "격자 왕국"을 하고 있다.

크기가 a×ba \times b인 직사각형 격자 판이 있다.

이 판을 세로 또는 가로로 자르기를 반복해 mm개의 직사각형으로 나눠야 한다. 직사각형의 크기가 같을 필요는 없다. 자르기는 총 정확히 kk번 해야 한다.

각 자르기는 판의 한쪽 끝에서 반대쪽 끝까지 이어지는 직선이다. 자르기는 칸과 칸 사이의 격자선을 따라서만 할 수 있다.

가로 자르기 횟수 hh(0≤h<a0 \le h < a)와 세로 자르기 횟수 vv(0≤v<b0 \le v < b)를 출력하라. 여러 방법이 가능하면 가로 자르기 횟수가 더 적은 방법을 출력한다. 요구한 방식으로 판을 자를 수 없으면 -1을 출력한다.

입력

첫 줄에 테스트 개수 tt(1≤t≤1001 \le t \le 100)가 정수 하나로 주어진다. 다음 tt개 줄에는 공백으로 구분된 정수 네 개 aa, bb, kk, mm이 한 줄에 하나씩 주어진다. 각각 판의 높이, 너비, 자르기 횟수, 직사각형 개수이다(1≤a,b≤1091 \le a, b \le 10^9, 0≤k≤2⋅1090 \le k \le 2 \cdot 10^9, 1≤m≤10181 \le m \le 10^{18}, k<mk < m).

출력

각 테스트마다 요구한 방식으로 판을 자를 수 있으면 공백으로 구분된 정수 hh와 vv를 출력한다. hh는 가로 자르기 횟수, vv는 세로 자르기 횟수이다. 자를 수 없으면 -1을 출력한다.

힌트

예시에는 테스트가 세 개 있다.

  1. 첫 번째 테스트에서는 아래 그림과 같이 판을 자를 수 있다.

첫 번째 테스트의 그림: a=2a = 2, b=2b = 2, k=1k = 1, m=2m = 2.

  1. 두 번째 테스트에서는 요구한 방식으로 판을 자를 수 없다.

  2. 세 번째 테스트에서는 아래 그림과 같이 판을 자를 수 있다.

세 번째 테스트의 그림: a=3a = 3, b=5b = 5, k=5k = 5, m=12m = 12.

예제1

  1. 예제 1

    입력
    3
    2 2 1 2
    1 2 2 3
    3 5 5 12
    
    예상 출력
    0 1
    -1
    2 3