풍선
시간 제한1초메모리 제한128 MB
두 방 A와 B에서 각 팀에 필요한 풍선을 배정해 이동 거리의 합이 최소가 되도록 한다.
문제
프로그래밍 대회에서 문제를 푼 팀은 풍선을 받는다. 풍선은 사람이 직접 달아 주어야 하므로 자원봉사자가 필요하다.
풍선은 방 와 방 에 나누어 보관되어 있다. 대회에 참가한 팀은 모두 개이며, 각 팀의 자리는 서로 다르다. 어떤 팀은 방 에, 어떤 팀은 방 에 더 가깝다.
각 팀에게 달아 주어야 하는 풍선의 개수와, 방 및 방 로부터의 거리가 주어진다. 이때 모든 풍선을 달아 주는 데 필요한 이동 거리의 최솟값을 구하라. 봉사자는 매우 많고, 한 팀에는 같은 색 풍선 여러 개를 달아 준다고 가정한다. 풍선 하나를 달기 위해 이동해야 하는 거리는 그 풍선을 가져온 방으로부터 팀까지의 거리와 같다. 봉사자는 한 번에 풍선 한 개만 들고 이동할 수 있다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 팀의 수 ()과, 방 및 방 에 보관된 풍선의 수 , ()가 주어진다.
다음 개의 줄에는 각 팀에 달아 주어야 하는 풍선의 수 와, 방 로부터의 거리 , 방 로부터의 거리 ()가 주어진다. 풍선이 부족한 경우는 없다. 즉, 각 테스트 케이스에서 이다.
입력의 마지막 줄에는 이 세 개 주어지며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 모든 팀에게 풍선을 달아 주기 위해 필요한 이동 거리의 최솟값을 한 줄에 하나씩 출력한다. 풍선을 달아 준 뒤 방 나 로 돌아오는 거리는 포함하지 않는다. 즉, 방에서 팀으로 이동하는 거리만 계산한다.