結果
| 問題 |
No.2860 Heal Slimes
|
| コンテスト | |
| ユーザー |
tomerun
|
| 提出日時 | 2024-08-25 16:28:43 |
| 言語 | Crystal (1.14.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 881 bytes |
| コンパイル時間 | 12,997 ms |
| コンパイル使用メモリ | 295,512 KB |
| 実行使用メモリ | 20,212 KB |
| 最終ジャッジ日時 | 2024-08-25 16:29:01 |
| 合計ジャッジ時間 | 15,460 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 44 WA * 16 |
ソースコード
read_line.to_i.times do
puts solve() ? "Yes" : "No"
end
def solve
n, k, x = read_line.split.map(&.to_i)
h = read_line.split.map(&.to_i64)
min = h.min
h.map! { |v| v - min }
if h.any? { |v| v % x != 0 }
return false
end
h.map! { |v| v // x }
diff = Array.new(n - 1) { |i| h[i + 1] - h[i] }
ok = true
k.times.all? do |i|
if i == k - 1 && (diff.size - i) % k == 0
next
end
c = 0i64
if i == k - 1
c = -(1i64 << 50)
end
i.step(to: diff.size - 1, by: k) do |j|
if c <= 0
c = diff[j] + c
else
ok = false
break
end
end
if i == k - 1
if c > -(1i64 << 50)
ok = false
end
elsif (diff.size - i) % k == 0
if c < 0
ok = false
end
else
if c != 0
ok = false
end
end
if !ok
break
end
end
ok
end
tomerun