結果

問題 No.274 The Wall
ユーザー YosukeKawada
提出日時 2018-01-09 15:52:34
言語 Ruby
(3.4.1)
結果
AC  
実行時間 1,846 ms / 2,000 ms
コード長 913 bytes
コンパイル時間 1,990 ms
コンパイル使用メモリ 7,808 KB
実行使用メモリ 48,000 KB
最終ジャッジ日時 2025-03-17 19:00:50
合計ジャッジ時間 10,612 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 23
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

N,M = $stdin.gets.chomp.split(" ").map{ |a| a.to_i }

lines = []
N.times {
  l,r = $stdin.gets.chomp.split(" ").map{ |a| a.to_i }
  lines << [l,r]
}
#p lines

$connection = (0...lines.size).map { |i|
  l0,r0 = *lines[i]
  vl0,vr0 = M-1-r0,M-1-l0
  (0...lines.size).map { |j|
    next nil if i == j
    l1,r1 = *lines[j]
    ok1 = (r0 < l1 || r1 < l0)
    ok2 = (vr0 < l1 || r1 < vl0)
    case
    when  ok1 && !ok2; +1
    when !ok1 &&  ok2; -1
    when  ok1 &&  ok2; nil
    when !ok1 && !ok2
      puts "NO"
      exit
    end
  }
}

#p $connection

$status = (0...N).map{ nil }

def digger(i, expected = nil)
  if $status[i]
    if expected
      if expected != $status[i]
        puts "NO"
        exit
      end
    end
    return
  end

  $status[i] = expected || +1
  $connection[i].each_with_index { |c,j|
    next unless c
    digger(j,$status[i]*c)
  }
end

(0...N).each { |i|
  digger(i)
}

puts "YES"
0