結果

問題 No.3436 [Cherry 8th Tune B] この夏に何が起こるかな?
コンテスト
ユーザー kidodesu
提出日時 2026-01-23 22:03:02
言語 PyPy3
(7.3.17)
結果
AC  
実行時間 2,244 ms / 4,000 ms
コード長 1,553 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 205 ms
コンパイル使用メモリ 82,400 KB
実行使用メモリ 118,920 KB
最終ジャッジ日時 2026-01-23 22:04:16
合計ジャッジ時間 64,464 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 43
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from bisect import bisect_left as bs
for _ in range(int(input())):
    n, m, k, p = list(map(int, input().split()))
    p = p-1
    T = list(map(int, input().split()))
    C = list(map(int, input().split()))
    B = list(map(int, input().split()))
    D = list(map(int, input().split()))
    S = list(map(int, input().split()))
    A = [[] for _ in range(k)]
    X = []
    for i in range(m):
        A[D[i]-1].append(B[i])
        X.append(B[i])
    X.sort()
    for i in range(k):
        A[i].sort()
    l = 0
    r = 2*10**9+1
    while r-l > 1:
        mid = (l+r) >> 1
        cnt = 0
        for i in range(n):
            t, c = T[i], C[i]-1
            cnt += bs(X, mid-t)
            s = S[c]
            cnt += bs(A[c], mid-t+s) - bs(A[c], mid-t)
        if cnt <= p:
            l = mid
        else:
            r = mid
    ans = l
    for i in range(n):
        t, c = T[i], C[i]-1
        idx2 = bs(A[c], ans-t+S[c])
        f = 0
        if idx2 < len(A[c]) and A[c][idx2] == ans-t+S[c]:
            f = 1
        else:
            idx0 = bs(X, ans-t)
            idx1 = bs(X, ans-t+1)
            s = S[c]
            idx2 = bs(A[c], ans-t)
            idx3 = bs(A[c], ans-t+1)
            if idx1-idx0 > idx3-idx2:
                f = 1
        if f:
            for j in range(m):
                if c != D[j]-1 and t + B[j] == ans:
                    print(i+1, j+1)
                    break
                if c == D[j]-1 and t + B[j] - S[c] == ans:
                    print(i+1, j+1)
                    break
            break
0