풍선

면접 대비

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

요약
두 방에 있는 풍선을 각 팀까지 배달할 때 이동 거리 합의 최솟값을 구한다.
난이도

보통10점 중 5점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

프로그래밍 대회에서는 팀이 문제를 풀 때마다 풍선을 나눠 주는데, 이 과정에서 물류 문제가 생길 수 있다. 한 대회장에는 풍선이 채워진 두 개의 방 A와 B가 있다. N개의 팀이 대회에 참가하며 각 팀은 서로 다른 자리에 앉아 있다. 어떤 팀은 방 A에 더 가깝고, 어떤 팀은 방 B에 더 가까우며, 어떤 팀은 두 방에서 같은 거리에 있다.

각 팀이 필요로 하는 풍선의 수와, 각 팀에서 방 A까지의 거리 및 방 B까지의 거리가 주어진다. 두 방에서 풍선을 최적으로 배분한다고 할 때, 모든 풍선을 각 팀에게 전달하기 위해 이동해야 하는 총 거리의 최솟값을 구하여라. 모든 풍선은 동일하며, 한 팀의 풍선은 두 방에서 임의의 비율로 나누어 가져올 수 있다.

입력

입력에는 여러 개의 테스트 케이스가 있다. 각 테스트 케이스는 세 정수가 담긴 줄로 시작한다.

N A B

여기서 N은 팀의 수이고(1≤N≤10001 \le N \le 1000), A와 B는 각각 방 A와 방 B에 있는 풍선의 개수이다(0≤A,B≤100000 \le A, B \le 10000). 이어지는 N개의 줄에는 각 팀에 대한 세 정수가 주어진다.

K DA DB

여기서 K는 이 팀이 필요로 하는 풍선의 총 개수, DA는 이 팀에서 방 A까지의 거리, DB는 이 팀에서 방 B까지의 거리이다(0≤DA,DB≤10000 \le DA, DB \le 1000). 풍선은 항상 충분하다고 가정할 수 있다. 즉, 모든 K의 합은 A+BA + B 이하이다. 입력은 세 개의 0이 담긴 줄로 끝난다.

출력

각 테스트 케이스마다 한 정수를 출력한다. 이는 모든 풍선을 전달하기 위해 이동해야 하는 총 거리의 최솟값이다. 방 A나 방 B에서 팀으로 가는 편도 이동만 계산하고, 심부름꾼이 방으로 되돌아가는 거리는 계산하지 않는다. 각 답을 한 줄에 하나씩, 불필요한 공백 없이 출력하고 답 사이에 빈 줄을 넣지 않는다.

예제1

  1. 예제 1

    입력
    3 15 35
    10 20 10
    10 10 30
    10 40 10
    0 0 0
    
    예상 출력
    300