結果
問題 |
No.2182 KODOKU Stone
|
ユーザー |
|
提出日時 | 2023-12-29 15:39:47 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 967 bytes |
コンパイル時間 | 356 ms |
コンパイル使用メモリ | 82,232 KB |
実行使用メモリ | 161,348 KB |
最終ジャッジ日時 | 2024-09-27 16:12:42 |
合計ジャッジ時間 | 16,628 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 WA * 1 |
ソースコード
n = int(input()) K = list(map(int, input().split())) A = [[] for _ in range(n)] for i in range(n): input() A[i] = list(map(int, input().split())) def ok(x): C = [] all_ = [] for row in A: c = sum(a >= x for a in row) if c == len(row): all_.append(c) else: C.append(c) if not C: return True C.sort() all_.sort(reverse=True) for k in K[::-1]: if C and C[-1] >= k: return True elif all_ and all_[0] >= k: return True if C[-1] == k - 1: if all_ and all_[-1] < k - 1: all_.pop() else: C.pop() elif all_: all_.pop() else: return False if not C and all_: return True return False l = 1 r = 1 << 30 while r - l > 1: mid = (l + r) // 2 if ok(mid): l = mid else: r = mid print(l)