結果
| 問題 | No.3724 Domination |
| コンテスト | |
| ユーザー |
tomerun
|
| 提出日時 | 2026-09-19 14:09:46 |
| 言語 | Crystal (1.21.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 218 ms / 2,000 ms |
| + 200µs | |
| コード長 | 785 bytes |
| 記録 | |
| コンパイル時間 | 14,021 ms |
| コンパイル使用メモリ | 326,468 KB |
| 実行使用メモリ | 11,648 KB |
| 最終ジャッジ日時 | 2026-09-19 14:10:12 |
| 合計ジャッジ時間 | 21,739 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge5_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点 | 20 % | AC * 8 |
| 満点 | 80 % | AC * 52 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
RND = Random.new(2)
read_line.to_i.times do
solve()
end
def solve
n = read_line.to_i
r = read_line.split.map(&.to_i)
c = read_line.split.map(&.to_i)
if n == 1
puts 1
return
end
if n == 2
puts -1
return
end
a = Array.new(n) { |i| Array.new(n, r[i]) }
cnt = Array.new(n, 0)
100.times do
n.times { |i| a[i].fill(r[i]) }
cnt.fill(0)
cands = [] of Int32
n.times do |x|
cands.clear
n.times do |y|
if a[y][x] != c[x] && cnt[y] + 1 < (n + 1) // 2
cands << y
end
end
break if cands.empty?
y = cands[RND.rand(cands.size)]
a[y][x] = c[x]
cnt[y] += 1
end
break if cnt.sum == n
end
if cnt.sum == n
a.each { |r| puts r.join(" ") }
else
puts -1
end
end
tomerun