結果

問題 No.274 The Wall
コンテスト
ユーザー ゴリポン先生
提出日時 2026-06-16 21:29:54
言語 D
(dmd 2.112.0)
コンパイル:
dmd -fPIE -m64 -w -wi -O -release -inline -I/opt/dmd/src/druntime/import/ -I/opt/dmd/src/phobos -L-L/opt/dmd/linux/lib64/ -fPIC _filename_
実行:
./Main
結果
WA  
実行時間 -
コード長 895 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 4,250 ms
コンパイル使用メモリ 207,872 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-06-16 21:30:05
合計ジャッジ時間 5,640 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 22 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

module main;
// https://mayokoex.hatenablog.com/entry/2015/08/29/104223 より
// 2次元グリッド、貪欲法
import std;

int N, M;
int[] L, R;
alias P = Tuple!(int, "l", int, "r");
P[] walls;

bool solve()
{
	int l = 0, r = M - 1;
	foreach (p; walls) {
		if (p.l >= l) {
			if (p.r > r)
				return false;
			l = p.r + 1;
		} else if (M - p.r - 1 <= r) {
			if (M - p.r - 1 < l)
				return false;
			r = M - p.r - 2;
		} else
			return false;
	}
	return true;
}

void main()
{
	// 入力
	readln.chomp.formattedRead("%d %d", N, M);
	L = new int[](N), R = new int[](N);
	foreach (ref l, ref r; lockstep(L, R)) {
		readln.chomp.formattedRead("%d %d", l, r);
		if (l <= M - r - 1) walls ~= P(l, r);
		// 裏返したほうがブロックが左に寄るならば裏返す
		else walls ~= P(M - r - 1, M - l - 1);
	}
	// 答えの計算と出力
	walls.sort;
	writeln(solve() ? "YES" : "NO");
}
0