結果

問題 No.1361 [Zelkova 4th Tune *] QUADRUPLE-SEQUENCEの詩
ユーザー mkawa2mkawa2
提出日時 2021-01-23 11:36:44
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 4,349 bytes
コンパイル時間 333 ms
コンパイル使用メモリ 82,004 KB
実行使用メモリ 154,672 KB
最終ジャッジ日時 2024-06-09 16:31:27
合計ジャッジ時間 22,320 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
61,508 KB
testcase_01 AC 45 ms
54,088 KB
testcase_02 AC 43 ms
60,412 KB
testcase_03 AC 43 ms
60,468 KB
testcase_04 AC 39 ms
53,144 KB
testcase_05 AC 39 ms
53,592 KB
testcase_06 AC 39 ms
53,500 KB
testcase_07 AC 38 ms
53,288 KB
testcase_08 AC 71 ms
71,208 KB
testcase_09 AC 61 ms
68,772 KB
testcase_10 AC 69 ms
71,188 KB
testcase_11 AC 63 ms
69,624 KB
testcase_12 AC 67 ms
71,008 KB
testcase_13 AC 69 ms
71,712 KB
testcase_14 AC 60 ms
66,740 KB
testcase_15 AC 80 ms
74,736 KB
testcase_16 AC 75 ms
72,612 KB
testcase_17 AC 70 ms
72,028 KB
testcase_18 AC 149 ms
80,156 KB
testcase_19 AC 116 ms
77,472 KB
testcase_20 AC 171 ms
80,156 KB
testcase_21 AC 119 ms
78,624 KB
testcase_22 AC 128 ms
78,212 KB
testcase_23 AC 146 ms
79,588 KB
testcase_24 AC 154 ms
79,604 KB
testcase_25 AC 146 ms
79,480 KB
testcase_26 AC 157 ms
79,728 KB
testcase_27 AC 138 ms
78,240 KB
testcase_28 AC 1,992 ms
120,108 KB
testcase_29 AC 1,325 ms
110,540 KB
testcase_30 AC 1,160 ms
109,232 KB
testcase_31 AC 1,563 ms
130,580 KB
testcase_32 TLE -
testcase_33 AC 980 ms
111,656 KB
testcase_34 AC 1,959 ms
134,160 KB
testcase_35 TLE -
testcase_36 TLE -
testcase_37 -- -
testcase_38 -- -
testcase_39 -- -
testcase_40 -- -
testcase_41 -- -
testcase_42 -- -
testcase_43 -- -
testcase_44 -- -
testcase_45 -- -
testcase_46 -- -
testcase_47 -- -
testcase_48 -- -
testcase_49 -- -
testcase_50 -- -
testcase_51 -- -
testcase_52 -- -
testcase_53 -- -
testcase_54 -- -
testcase_55 -- -
testcase_56 -- -
testcase_57 -- -
testcase_58 -- -
testcase_59 -- -
testcase_60 -- -
testcase_61 -- -
testcase_62 -- -
testcase_63 -- -
testcase_64 -- -
testcase_65 -- -
testcase_66 -- -
testcase_67 -- -
testcase_68 -- -
testcase_69 -- -
testcase_70 -- -
testcase_71 -- -
testcase_72 -- -
testcase_73 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys

sys.setrecursionlimit(10**6)
int1 = lambda x: int(x)-1
p2D = lambda x: print(*x, sep="\n")
def II(): return int(sys.stdin.buffer.readline())
def MI(): return map(int, sys.stdin.buffer.readline().split())
def MI1(): return map(int1, sys.stdin.buffer.readline().split())
def LI(): return list(map(int, sys.stdin.buffer.readline().split()))
def LI1(): return list(map(int1, sys.stdin.buffer.readline().split()))
def LLI(rows_number): return [LI() for _ in range(rows_number)]
def BI(): return sys.stdin.buffer.readline().rstrip()
def SI(): return sys.stdin.buffer.readline().rstrip().decode()
dij = [(0, 1), (-1, 0), (0, -1), (1, 0)]
inf = 10**19
# md = 998244353
md = 10**9+7

def mulall(aa, bb):
    pos = []
    neg = []
    zero = 0
    for i, a in enumerate(aa):
        for j, b in enumerate(bb):
            if a*b == 0: zero += 1
            elif a*b > 0: pos.append((a*b, i, j))
            else: neg.append((a*b, i, j))
    pos.sort(key=lambda x: x[0])
    neg.sort(key=lambda x: x[0])
    return pos, neg, zero

def ok1(m):
    cnt = 0
    if abp and cdn:
        idx = len(cdn)-1
        for x, i, j in abp[::-1]:
            while idx >= 0 and cdn[idx][0]*x >= m:
                idx -= 1
            if idx < 0: break
            cnt += idx+1
    if abn and cdp:
        idx = len(abn)-1
        for x, i, j in cdp[::-1]:
            while idx >= 0 and abn[idx][0]*x >= m:
                idx -= 1
            if idx < 0: break
            cnt += idx+1
    return cnt < s

def ok2(m):
    cnt = 0
    if abp and cdp:
        idx = len(cdp)-1
        for x, i, j in abp:
            while idx >= 0 and cdp[idx][0]*x >= m:
                idx -= 1
            if idx < 0: break
            cnt += idx+1
    if abn and cdn:
        idx = 0
        for x, i, j in abn[::-1]:
            while idx < len(cdn) and cdn[idx][0]*x >= m:
                idx += 1
            if idx >= len(cdn): break
            cnt += len(cdn)-idx
    return cnt < s

def findindex1(l):
    if abp and cdn:
        idx = 0
        for x, i, j in abp:
            while idx < len(cdn) and x*cdn[idx][0] < l:
                idx += 1
            if idx == len(cdn): break
            if x*cdn[idx][0] == l:
                print(aa[i], bb[j], cc[cdn[idx][1]], dd[cdn[idx][2]])
                return
    if abn and cdp:
        idx = 0
        for x, i, j in cdp:
            while idx < len(abn) and x*abn[idx][0] < l:
                idx += 1
            if idx == len(abn): break
            if x*abn[idx][0] == l:
                print(aa[abn[idx][1]], bb[abn[idx][2]], cc[i], dd[j])
                return

def findindex2(l):
    if abp and cdp:
        idx = len(cdp)-1
        for x, i, j in abp:
            while idx >= 0 and x*cdp[idx][0] > l:
                idx -= 1
            if idx < 0: break
            if x*cdp[idx][0] == l:
                print(aa[i], bb[j], cc[cdp[idx][1]], dd[cdp[idx][2]])
                return
    idx = len(cdn)-1
    for x, i, j in abn:
        while idx >= 0 and x*cdn[idx][0] < l:
            idx -= 1
        if idx < 0: break
        if x*cdn[idx][0] == l:
            print(aa[i], bb[j], cc[cdn[idx][1]], dd[cdn[idx][2]])
            return

def find0(aa):
    for i, a in enumerate(aa):
        if a == 0: return i
    return -1

an, bn, cn, dn, s = MI()
aa = LI()
bb = LI()
cc = LI()
dd = LI()

abp, abn, abz = mulall(aa, bb)
cdp, cdn, cdz = mulall(cc, dd)
# print(abp, abn, cdp, cdn)

if len(abp)*len(cdn)+len(abn)*len(cdp) >= s:
    l = -10**18
    r = 0
    while l+1 < r:
        m = (l+r)//2
        if ok1(m): l = m
        else: r = m
    print(l)
    findindex1(l)

elif len(abp)*len(cdn)+len(abn)*len(cdp)+abz*cn*dn+cdz*an*bn >= s:
    print(0)
    if abz:
        i = find0(aa)
        if i != -1:
            print(0, bb[0], cc[0], dd[0])
            exit()
        i = find0(bb)
        if i != -1:
            print(aa[0], 0, cc[0], dd[0])
            exit()
    else:
        i = find0(cc)
        if i != -1:
            print(aa[0], bb[0], 0, dd[0])
            exit()
        i = find0(dd)
        if i != -1:
            print(aa[0], bb[0], cc[0], 0)
            exit()

else:
    s -= len(abp)*len(cdn)+len(abn)*len(cdp)+abz*cn*dn+cdz*an*bn
    l = 0
    r = 10**18
    while l+1 < r:
        m = (l+r)//2
        if ok2(m): l = m
        else: r = m
    print(l)
    findindex2(l)
0