結果
| 問題 | No.33 アメーバがたくさん |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-08-01 22:05:36 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 623 bytes |
| コンパイル時間 | 3,560 ms |
| コンパイル使用メモリ | 206,064 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-08-01 22:05:42 |
| 合計ジャッジ時間 | 4,201 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 |
ソースコード
module main;
// https://kmjp.hatenablog.jp/entry/2015/07/14/0900 より
import std;
void main()
{
// 入力
long N, D, T;
readln.chomp.formattedRead("%d %d %d", N, D, T);
auto X = readln.split.to!(long[]);
// 答えの計算
alias P = Tuple!(long, long);
P[][long] M;
foreach (x; X)
M[(D + x % D) % D] ~= P(x - D * T, x + D * T);
// 答えの計算
long ans = 0;
foreach (V; M) {
long mi = -1L << 60, ma = -(1L << 60) - D;
V.sort;
foreach (v; V) {
if (v[0] > ma) {
ans += (ma - mi) / D + 1;
mi = v[0];
}
ma = v[1];
}
ans += (ma - mi) / D + 1;
}
// 答えの出力
writeln(ans);
}