밀도 d를 정해 |W_i - d*C_i|의 합을 최소로 만들고, 그 최솟값을 기약분수로 출력한다.
보통6수학그리디정렬이분 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB알고리즘 캠프의 특별 손님 성원이가 참가자에게 나눠 줄 사탕을 만든다. 참가자는 N명이고 0번부터 N−1번까지 번호가 붙어 있다.
i번 참가자는 용량이 Ci 리터인 바구니를 들고 있고, 받고 싶은 사탕의 무게는 Wi 그램이다.
성원이는 모든 바구니를 용량만큼 가득 채운다. 즉 i번 참가자는 정확히 Ci 리터의 사탕을 받는다. 대신 사탕은 한 종류만 만들 수 있어서, 밀도 d(그램/리터)는 모든 사탕에 똑같이 적용된다. d는 양의 실수 중에서 마음대로 고를 수 있다.
밀도를 d로 정하면 i번 참가자가 실제로 받는 사탕의 무게는 d×Ci 그램이다. 성원이는 되도록 많은 참가자를 만족시키려고, 원하는 무게와 실제로 받은 무게의 차이의 합
∑i=0N−1∣Wi−d×Ci∣
을 최소로 하는 d를 고른다. 이 합의 최솟값을 구하는 프로그램을 작성하시오.
첫째 줄에 참가자의 수 N (1≤N≤50)이 주어진다.
둘째 줄에 C0,C1,…,CN−1이, 셋째 줄에 W0,W1,…,WN−1이 공백으로 구분되어 주어진다. (1≤Ci,Wi≤1000000)
차이의 합의 최솟값을 기약분수로 한 줄에 출력한다.
최솟값은 항상 유리수이다. 이 값을 p/q (p는 음이 아닌 정수, q는 양의 정수, gcd(p,q)=1)로 나타냈을 때, q=1이면 p만 출력하고, 그렇지 않으면 p/q 형식으로 출력한다. 소수나 근삿값은 정답으로 인정하지 않는다.