아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

사탕의 밀도

면접 대비

시간 제한2초메모리 제한512 MB

요약
밀도 d를 정해 |W_i - d*C_i|의 합을 최소로 만들고, 그 최솟값을 기약분수로 출력한다.
난이도

보통10점 중 6점

유형
수학, 그리디, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

알고리즘 캠프의 특별 손님 성원이가 참가자에게 나눠 줄 사탕을 만든다. 참가자는 NN명이고 0번부터 N−1N-1번까지 번호가 붙어 있다.

ii번 참가자는 용량이 CiC_i 리터인 바구니를 들고 있고, 받고 싶은 사탕의 무게는 WiW_i 그램이다.

성원이는 모든 바구니를 용량만큼 가득 채운다. 즉 ii번 참가자는 정확히 CiC_i 리터의 사탕을 받는다. 대신 사탕은 한 종류만 만들 수 있어서, 밀도 dd(그램/리터)는 모든 사탕에 똑같이 적용된다. dd는 양의 실수 중에서 마음대로 고를 수 있다.

밀도를 dd로 정하면 ii번 참가자가 실제로 받는 사탕의 무게는 d×Cid \times C_i 그램이다. 성원이는 되도록 많은 참가자를 만족시키려고, 원하는 무게와 실제로 받은 무게의 차이의 합

∑i=0N−1∣Wi−d×Ci∣\sum_{i=0}^{N-1} \left| W_i - d \times C_i \right|

을 최소로 하는 dd를 고른다. 이 합의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 참가자의 수 NN (1≤N≤501 \le N \le 50)이 주어진다.

둘째 줄에 C0,C1,…,CN−1C_0, C_1, \dots, C_{N-1}이, 셋째 줄에 W0,W1,…,WN−1W_0, W_1, \dots, W_{N-1}이 공백으로 구분되어 주어진다. (1≤Ci,Wi≤10000001 \le C_i, W_i \le 1000000)

출력

차이의 합의 최솟값을 기약분수로 한 줄에 출력한다.

최솟값은 항상 유리수이다. 이 값을 p/qp / q (pp는 음이 아닌 정수, qq는 양의 정수, gcd⁡(p,q)=1\gcd(p, q) = 1)로 나타냈을 때, q=1q = 1이면 p만 출력하고, 그렇지 않으면 p/q 형식으로 출력한다. 소수나 근삿값은 정답으로 인정하지 않는다.

예제3

  1. 예제 1

    입력
    1
    5
    1000
    
    예상 출력
    0
  2. 예제 2

    입력
    2
    10 10
    1000 2000
    
    예상 출력
    1000
  3. 예제 3

    입력
    3
    10 20 40
    4000 2000 1000
    
    예상 출력
    5250