結果
問題 | No.274 The Wall |
ユーザー |
|
提出日時 | 2015-09-06 17:37:54 |
言語 | Nim (2.0.2) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,753 bytes |
コンパイル時間 | 787 ms |
コンパイル使用メモリ | 65,824 KB |
最終ジャッジ日時 | 2024-11-14 19:10:27 |
合計ジャッジ時間 | 1,153 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
/home/judge/data/code/Main.nim(32, 16) Error: type mismatch Expression: <N [1] N: int Expected one of (first mismatch at [position]): [1] proc `<`(x, y: bool): bool [1] proc `<`(x, y: char): bool [1] proc `<`(x, y: float): bool [1] proc `<`(x, y: float32): bool [1] proc `<`(x, y: int16): bool [1] proc `<`(x, y: int32): bool [1] proc `<`(x, y: int8): bool [1] proc `<`(x, y: pointer): bool [1] proc `<`(x, y: string): bool [1] proc `<`(x, y: uint): bool [1] proc `<`(x, y: uint16): bool [1] proc `<`(x, y: uint32): bool [1] proc `<`(x, y: uint64): bool [1] proc `<`(x, y: uint8): bool [1] proc `<`[Enum: enum](x, y: Enum): bool [1] proc `<`[T: tuple](x, y: T): bool [1] proc `<`[T](x, y: ptr T): bool [1] proc `<`[T](x, y: ref T): bool [1] proc `<`[T](x, y: set[T]): bool [2] proc `<`(x, y: int): bool [2] proc `<`(x, y: int64): bool
ソースコード
import strutils, sequtils var n, m: int l, r: seq[int] N: int G1, G2: seq[seq[int]] visited: seq[bool] cmp: seq[int] stk: seq[int] proc nya(v: int) = visited[v] = true for vv in G1[v]: if visited[vv]: continue nya(vv) stk.add(v) proc nyaa(v, cnt: int) = visited[v] = true for vv in G2[v]: if visited[vv]: continue nyaa(vv, cnt) cmp[v] = cnt proc scc(): int = visited = newSeqWith(N, false) cmp = newSeqWith(N, 0) stk = newSeq[int](0) for v in 0.. <N: if visited[v]: continue nya(v) visited = newSeqWith(N, false) result = 0 while len(stk) > 0: var v = stk.pop if visited[v]: continue nyaa(v, result) result += 1 proc rev(x: int): int = result = m-x-1 proc add_edge(v0, v1: int) = G1[v0].add(v1) G2[v1].add(v0) proc add_edges(i, j: int) = add_edge(i, j) var x = if i>=n: i-n else: i+n y = if j>=n: j-n else: j+n add_edge(y, x) ### var nm = stdin.readLine.split n = nm[0].parseInt m = nm[1].parseInt l = newSeqWith(n, 0) r = newSeqWith(n, 0) for i in 0.. <n: var lr = stdin.readLine.split l[i] = lr[0].parseInt r[i] = lr[1].parseInt N = 2 * n G1 = newSeqWith(N, newSeq[int](0)) G2 = newSeqWith(N, newSeq[int](0)) for i in 0.. <n: var li0 = l[i] li1 = r[i].rev ri0 = r[i] ri1 = l[i].rev for j in i+1.. <n: var lj0 = l[j] lj1 = r[j].rev rj0 = r[j] rj1 = l[j].rev if li0 <= rj0 and lj0 <= ri0: add_edges(i, n+j) if li1 <= rj0 and lj0 <= ri1: add_edges(n+i, n+j) if li0 <= rj1 and lj1 <= ri0: add_edges(i, j ) if li1 <= rj1 and lj1 <= ri1: add_edges(n+i, j ) var x = scc() for i in 0.. <n: if cmp[i] == cmp[n+i]: echo "NO" quit(0) echo "YES"