컨베이어 벨트
시간 제한1초메모리 제한512 MB
고정 비율 a:b 분배기를 200개 이하로 연결해 하나의 입력을 두 출력에서 c:d 비율로 나누는 벨트 네트워크를 구성합니다.
문제
당신은 Boxing And Processing Company의 직원이며, 회사의 거대한 창고 중 한 곳에서 상자를 분배하는 일을 맡았다. 이 회사에서 상자는 컨베이어 벨트로 이동한다. 두 벨트는 한쪽이 다른 쪽 위로 내용물을 떨어뜨려 하나로 합칠 수 있다. 반대로 스플리터를 쓰면 벨트를 둘로 나눌 수 있다. 스플리터는 입력의 정해진 몫을 첫 번째 출력으로, 나머지를 두 번째 출력으로 보낸다.
가변 스플리터는 입력을 원하는 어떤 비율로든 나눌 수 있다. 그러나 비용을 줄이려고 사장은 입력을 고정된 비율 로만 나누는 저가형 스플리터를 주문했다. 필요한 것은 스플리터지만, 사장과 다투는 대신 직접 만들기로 한다.
비용을 아껴야 한다. 시스템 안에 끝내 빠져나가지 못하는 상자가 있어서는 안 된다. 상자를 한 번도 받지 못하는 스플리터를 써서도 안 된다. 또한 스플리터를 너무 많이 쓸 수 없다.
비율 와 가 주어졌을 때, 전역 입력 벨트 하나와 전역 출력 벨트 두 개를 가지며 입력을 비율로 나누는 벨트 네트워크를 만들어라. 사용하는 스플리터는 최대 200개이다.
비율이 인 스플리터는 들어온 상자의 정확히 를 첫 번째 출력으로, 정확히 를 두 번째 출력으로 보낸다.
입력
첫 번째 줄에 저가형 스플리터의 비율을 나타내는 정수 와 가 주어진다. 이고 이다.
두 번째 줄에 원하는 비율을 나타내는 정수 와 가 주어진다. 이고 이다.
출력
첫 번째 줄에 사용한 스플리터의 개수 을 출력한다. 이다.
이어서 개의 줄을 출력한다. 번째 줄에는 정수 와 를 쓰며, 이다. 는 번째 스플리터의 왼쪽 출력에 연결된 스플리터 번호로, 여기에 입력의 가 간다. 마찬가지로 는 입력의 를 받는 스플리터 번호이다. 스플리터는 0부터 번호를 매긴다. 전역 입력은 스플리터 0에 연결된다. 과 는 각각 첫 번째와 두 번째 전역 출력을 뜻하며, 이 출력에는 전역 입력의 와 가 도달해야 한다.
어떤 상자도 도달하지 않는 자리에 스플리터를 둘 수 없고, 지나간 상자가 출력에 닿지 못하는 자리에 둘 수도 없다. 해가 여러 개라면 그중 아무거나 출력해도 된다.