結果
| 問題 |
No.274 The Wall
|
| コンテスト | |
| ユーザー |
bal4u
|
| 提出日時 | 2019-07-28 19:25:20 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 1,113 bytes |
| コンパイル時間 | 141 ms |
| コンパイル使用メモリ | 25,600 KB |
| 実行使用メモリ | 7,324 KB |
| 最終ジャッジ日時 | 2025-03-17 19:02:48 |
| 合計ジャッジ時間 | 1,225 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 23 |
ソースコード
// yukicoder: No.274 The Wall
// 2019.7.28 bal4u
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if 1
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif
int in() { // 非負整数の入力
int n = 0, c = gc();
do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0');
return n;
}
typedef struct { int l, r; } T;
T tbl[2002]; int N, M;
char f[4002];
int cmp(const void *a, const void *b) {
int t = ((T *)a)->l - ((T *)b)->l;
if (t) return t;
return ((T *)a)->r - ((T *)b)->r;
}
int check(int l, int r) {
while (l <= r) if (f[l++]) return 0;
return 1;
}
int main()
{
int i, M;
N = in(), M = in();
if (N >= M) { puts("NO"); return 0; }
for (i = 0; i < N; i++) {
int l = in(), r = in();
if (l <= M-1-r) tbl[i].l = l, tbl[i].r = r;
else tbl[i].l = M-1-r, tbl[i].r = M-1-l;
}
qsort(tbl, N, sizeof(T), cmp);
for (i = 0; i < N; i++) {
if (check(tbl[i].l, tbl[i].r)) memset(f+tbl[i].l, 1, tbl[i].r-tbl[i].l+1);
else if (check(M-1-tbl[i].r, M-1-tbl[i].l))
memset(f+M-1-tbl[i].r, 1, tbl[i].r-tbl[i].l+1);
else break;
}
puts(i < N? "NO": "YES");
return 0;
}
bal4u