結果
| 問題 |
No.274 The Wall
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-08-14 10:34:30 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,449 bytes |
| コンパイル時間 | 184 ms |
| コンパイル使用メモリ | 82,200 KB |
| 実行使用メモリ | 592,864 KB |
| 最終ジャッジ日時 | 2024-10-10 11:41:48 |
| 合計ジャッジ時間 | 10,374 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 MLE * 1 |
ソースコード
import sys
sys.setrecursionlimit(10**6)
inf = 10**20
eps = 1.0 / 10**10
def LI(): return list(map(int, sys.stdin.readline().split()))
def scc(n, e, re):
v = [None] * n
t = []
def dfs(i):
v[i] = 0
for b in e[i]:
if v[b] is None:
dfs(b)
t.append(i)
for i in range(n):
if v[i] is None:
dfs(i)
r = [None] * n
def dfs2(i, p):
r[i] = p
for b in re[i]:
if r[b] is None:
dfs2(b, p)
for c in t[::-1]:
if r[c] is None:
dfs2(c, c)
return r
def main():
n,m = LI()
lr = [LI() for _ in range(n)]
e = [[] for _ in range(n*2)]
re = [[] for _ in range(n*2)]
def f(i,ni,li,ri,j,nj,lj,rj):
if li<=lj<=ri or li<=rj<=ri or lj<=li<=rj:
e[i].append(nj)
re[nj].append(i)
e[j].append(ni)
re[ni].append(j)
for i in range(n):
li,ri = lr[i]
rli,rri = m-ri-1,m-li-1
for j in range(i+1,n):
lj,rj = lr[j]
rlj,rrj = m-rj-1,m-lj-1
f(i,i+n,li,ri,j,j+n,lj,rj)
f(i,i+n,li,ri,j+n,j,rlj,rrj)
f(i+n,i,rli,rri,j,j+n,lj,rj)
f(i+n,i,rli,rri,j+n,j,rlj,rrj)
r = scc(n*2,e,re)
for i in range(n):
if r[i] == r[i+n]:
return "NO"
return "YES"
# start = time.time()
print(main())
# pe(time.time() - start)