結果

問題 No.3073 Fraction Median
ユーザー 👑 loop0919
提出日時 2025-03-21 23:20:00
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 954 bytes
コンパイル時間 409 ms
コンパイル使用メモリ 82,324 KB
実行使用メモリ 53,840 KB
最終ジャッジ日時 2025-03-21 23:20:07
合計ジャッジ時間 6,268 ms
ジャッジサーバーID
(参考情報)
judge7 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 4 TLE * 1 -- * 13
権限があれば一括ダウンロードができます

ソースコード

diff #

from math import gcd

N = int(input())
A = sorted(list(map(int, input().split())))

def comp(X, Y):
    x_c, x_d = X
    y_c, y_d = Y
    return x_c * y_d <= y_c * x_d

def check(val, check=False):
    max_c, max_d = 0, 1
    cnt = 0
    for i in range(N):
        ok, ng = 0, N
        while ng - ok > 1:
            mid = (ok + ng) // 2
            if comp((A[mid - 1], A[i]), (val, 10**18)):
                ok = mid
            else:
                ng = mid
        
        cnt += ok
        
        if not check:
            continue
        if ok > 0 and comp((max_c, max_d), (A[ok - 1], A[i])):
            max_c, max_d = A[ok - 1], A[i]
    
    if check:
        return (max_c, max_d)
    return True if cnt < N * (N - 1) // 2 else False


ok, ng = 0, 10**18 + 1

while ng - ok > 1:
    mid = (ok + ng) // 2
    if check(mid):
        ok = mid
    else:
        ng = mid

ans = check(ng, True)
print(ans[0] // gcd(*ans), ans[1] // gcd(*ans))
0