結果
| 問題 | 
                            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);
}