結果

問題 No.5002 stick xor
ユーザー TANIGUCHI KousukeTANIGUCHI Kousuke
提出日時 2020-09-08 18:16:49
言語 Ruby
(3.3.0)
結果
AC  
実行時間 15 ms / 1,000 ms
コード長 797 bytes
コンパイル時間 27 ms
実行使用メモリ 11,836 KB
スコア 19,741
最終ジャッジ日時 2020-09-08 18:16:52
ジャッジサーバーID
(参考情報)
judge6 / judge7
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 14 ms
11,656 KB
testcase_01 AC 14 ms
11,748 KB
testcase_02 AC 14 ms
11,660 KB
testcase_03 AC 15 ms
11,780 KB
testcase_04 AC 15 ms
11,648 KB
testcase_05 AC 15 ms
11,656 KB
testcase_06 AC 14 ms
11,712 KB
testcase_07 AC 15 ms
11,732 KB
testcase_08 AC 14 ms
11,756 KB
testcase_09 AC 14 ms
11,676 KB
testcase_10 AC 15 ms
11,672 KB
testcase_11 AC 15 ms
11,720 KB
testcase_12 AC 15 ms
11,700 KB
testcase_13 AC 15 ms
11,796 KB
testcase_14 AC 14 ms
11,680 KB
testcase_15 AC 15 ms
11,740 KB
testcase_16 AC 15 ms
11,732 KB
testcase_17 AC 14 ms
11,684 KB
testcase_18 AC 14 ms
11,776 KB
testcase_19 AC 14 ms
11,676 KB
testcase_20 AC 14 ms
11,764 KB
testcase_21 AC 15 ms
11,668 KB
testcase_22 AC 15 ms
11,764 KB
testcase_23 AC 15 ms
11,764 KB
testcase_24 AC 14 ms
11,768 KB
testcase_25 AC 15 ms
11,652 KB
testcase_26 AC 14 ms
11,700 KB
testcase_27 AC 14 ms
11,760 KB
testcase_28 AC 14 ms
11,708 KB
testcase_29 AC 14 ms
11,656 KB
testcase_30 AC 14 ms
11,704 KB
testcase_31 AC 15 ms
11,752 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

def up!(y,x,l); puts "#{y - l + 1} #{x} #{y} #{x}"; end

N, K = gets.split.map(&:to_i)

L = gets.split.map(&:to_i)
A = Array.new(K)
B = Array.new(N + 1){ [] }

MAP = N.times.map{ gets.chomp.chars.map(&:to_i) }
Up = Array.new(N + 1){ Array.new(N + 1, 0) }

(1 .. N).each do |x|
  s_ = (1 .. N).inject(0) do |s, y|
    b = MAP[y - 1][x - 1]
    next s + 1 if b > 0
    B[s] << [y - 1, x] if s > 0
    next 0
  end
  B[s_] << [N, x] if s_ > 0
end

(1 .. N).each do |l|
  B[l].sort_by!{|y,x| -y }
end

L.each do |l|
  if B[l].empty?
    j = B.rindex{|q| !q.empty? }
    y, x = B[j].shift
    if j > l
      up!(y,x,l)
      B[j - l] << [y - l, x]
    elsif y > l
      up!(y, x, l)
      B[l - j] << [y - j, x]
    else
      up!(l, x, l)
    end
  else
    y,x = B[l].shift
    up!(y,x,l) 
  end
end
0