結果
| 問題 | No.3724 Domination |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-10-17 01:52:02 |
| 言語 | PyPy3 (8.0.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 395 ms / 2,000 ms |
| + 287µs | |
| コード長 | 1,185 bytes |
| 記録 | |
| コンパイル時間 | 83 ms |
| コンパイル使用メモリ | 64,872 KB |
| 実行使用メモリ | 93,616 KB |
| 最終ジャッジ日時 | 2026-10-17 01:52:39 |
| 合計ジャッジ時間 | 20,572 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点 | 20 % | AC * 8 |
| 満点 | 80 % | AC * 52 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
import sys
input = sys.stdin.readline
from random import randint
from collections import Counter
def check(A,R,C):
for i in range(len(A)):
CO=Counter(A[i])
xx=CO[R[i]]
for c in CO:
if c==R[i]:
continue
if CO[c]>=xx:
return False
return True
T=int(input())
for tests in range(T):
N=int(input())
R=list(map(int,input().split()))
C=list(map(int,input().split()))
if N==1:
print(1)
continue
if N==2:
print(-1)
continue
D={R[i]:i for i in range(N)}
flag=0
for kk in range(1000):
ANS=[[-1]*N for i in range(N)]
for i in range(N):
ANS[i]=[R[i]]*N
for j in range(N):
while True:
xx=randint(0,N-1)
if xx==D[C[j]]:
continue
else:
break
ANS[xx][j]=C[j]
if check(ANS,R,C)==True:
flag=1
break
flag=0
if flag==1:
for ans in ANS:
print(*ans)
else:
print(-1)
titia