結果

問題 No.274 The Wall
ユーザー ぴろず
提出日時 2015-08-28 22:59:25
言語 Java8
(openjdk 1.8.0.222)
結果
AC  
実行時間 155 ms
コード長 1,198 Byte
コンパイル時間 1,584 ms
使用メモリ 25,292 KB
最終ジャッジ日時 2019-10-20 09:01:51

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
99_system_test1.txt AC 106 ms
21,192 KB
99_system_test2.txt AC 107 ms
21,232 KB
99_system_test3.txt AC 144 ms
23,456 KB
challenge01.txt AC 109 ms
21,228 KB
sample1.txt AC 107 ms
21,252 KB
sample2.txt AC 105 ms
21,220 KB
sample3.txt AC 106 ms
21,248 KB
sample4.txt AC 107 ms
21,252 KB
system_test1.txt AC 105 ms
21,236 KB
test1.txt AC 106 ms
21,244 KB
test2.txt AC 148 ms
25,292 KB
test3.txt AC 150 ms
25,292 KB
test4.txt AC 126 ms
21,624 KB
test5.txt AC 141 ms
22,892 KB
test6.txt AC 145 ms
23,660 KB
test7.txt AC 148 ms
24,412 KB
test8.txt AC 148 ms
24,316 KB
test9.txt AC 149 ms
24,356 KB
test10.txt AC 149 ms
24,420 KB
test11.txt AC 150 ms
25,292 KB
test12.txt AC 154 ms
25,292 KB
test13.txt AC 151 ms
25,288 KB
test14.txt AC 153 ms
25,288 KB
test15.txt AC 152 ms
25,292 KB
test16.txt AC 155 ms
25,288 KB
テストケース一括ダウンロード

ソースコード

diff #
package no274;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		System.out.println(new Main().solve() ? "YES" : "NO");
	}

	int m;

	public boolean solve() {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		m = sc.nextInt();
		Block[] b = new Block[n];
		for(int i=0;i<n;i++) {
			b[i] = new Block(sc.nextInt(),sc.nextInt());
		}
		Arrays.sort(b);
		int l = 0;
		int r = m-1;
		for(int i=0;i<n;i++) {
			int bl = b[i].l;
			int br = b[i].r;
			if (l <= bl) {
				if (br > r) {
					return false;
				}
				l = br + 1;
			}else{
				int temp = bl;
				bl = m - 1 - br;
				br = m - 1 - temp;
				if (l <= bl && br <= r) {
					r = bl - 1;
				}else{
					return false;
				}
			}
		}
		return true;
	}

	class Block implements Comparable<Block>{
		int l,r;
		public Block(int l,int r) {
			if (l <= m-1-r) {
				this.l = l;
				this.r = r;
			}else{
				this.l = m - 1 - r;
				this.r = m - 1 - l;
			}
		}
		public int compareTo(Block o) {
			if (l != o.l) {
				return Integer.compare(l, o.l);
			}
			return Integer.compare(r, o.r);
		}
		public String toString() {
			return "[" + l + "," + r + "]";
		}
	}

}
0