結果
| 問題 |
No.200 カードファイト!
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-07-20 01:30:09 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,768 bytes |
| コンパイル時間 | 268 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 11,136 KB |
| 最終ジャッジ日時 | 2024-07-08 10:29:57 |
| 合計ジャッジ時間 | 2,122 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 WA * 15 |
ソースコード
def read_data():
N = int(input())
A = int(input())
Bs = list(map(int, input().split()))
C = int(input())
Ds = list(map(int, input().split()))
return N, A, Bs, C, Ds
def solve(N, A, Bs, C, Ds):
Bs.sort()
Ds.sort()
minA = min(Bs)
maxA = max(Bs)
minC = min(Ds)
maxC = max(Ds)
if minA > maxC:
return N
if maxA < minC:
return 0
if C >= A:
return solve_C_is_longer(N, A, Bs, C, Ds)
else:
return solve_A_is_longer(N, A, Bs, C, Ds)
def solve_C_is_longer(N, A, Bs, C, Ds):
repeat, residue = divmod(N, C)
Cs = Ds * repeat + Ds[:residue]
repeat, residue = divmod(N, A)
n_win = 0
for r in range(repeat):
subCs = Cs[r*A:(r+1)*A]
n_win += count_wins(Bs, subCs)
if residue:
subCs = Cs[-residue:]
subAs = Bs[-residue:]
n_win += count_wins(subAs, subCs)
return n_win
def solve_A_is_longer(N, A, Bs, C, Ds):
Bs.sort(reverse=True)
repeat, residue = divmod(N, A)
As = Bs * repeat + Bs[:residue]
repeat, residue = divmod(N, C)
n_win = 0
for r in range(repeat):
subAs = As[r*C:(r+1)*C]
n_win += count_wins(subAs, Ds)
if residue:
subAs = As[-residue:]
subCs = Ds[:residue]
n_win += count_wins(subAs, subCs)
return n_win
def count_wins(As, Cs):
N = len(As)
Acopy = As[:]
Ccopy = Cs[:]
Acopy.sort()
Ccopy.sort()
idxA = 0
n_win = 0
for c in Ccopy:
while Acopy[idxA] <= c:
idxA += 1
if idxA == N:
return n_win
n_win += 1
idxA += 1
if idxA == N:
return n_win
return n_win
N, A, Bs, C, Ds = read_data()
print(solve(N, A, Bs, C, Ds))