직사각형 타일링
시간 제한1초메모리 제한1024 MB
W x H 직사각형을 2의 거듭제곱 크기의 정사각형으로 겹치지 않게 채울 때 필요한 정사각형 개수의 최솟값을 구하고, 불가능하면 -1을 출력합니다.
문제
정수 변 길이를 가진 직사각형을 생각하자. 직사각형의 정사각형 타일링은 변이 직사각형의 변과 평행한, 서로 겹치지 않는 정사각형으로 전체 영역을 덮는 것이다. 정사각형 타일링에서 어떤 정사각형도 직사각형의 경계를 넘어가면 안 된다.
한 변의 길이가 의 거듭제곱인 정사각형들을 가지고 있다. 가진 정사각형으로 직사각형을 타일링할 때, 사용하는 정사각형의 개수가 가장 적은 타일링을 찾거나, 타일링이 불가능하다는 것을 알아내라.

그림 1: 처음 세 입력에 대한 최적의 정사각형 타일링. 표시가 없는 작은 타일은 타일이다.
입력
첫 줄에 세 정수 , , (, )이 주어진다. 와 는 직사각형의 가로와 세로 길이이다. 다음 줄에는 개의 정수 이 주어진다. 여기서 ()는 가진 정사각형의 개수이다.
출력
가진 정사각형으로 직사각형의 정사각형 타일링이 존재하면, 그 타일링에 필요한 정사각형 개수의 최솟값을 출력한다. 존재하지 않으면 을 출력한다.