結果

問題 No.59 鉄道の旅
ユーザー hoktohokto
提出日時 2020-03-03 09:01:11
言語 Ruby
(3.3.0)
結果
AC  
実行時間 472 ms / 5,000 ms
コード長 1,487 bytes
コンパイル時間 85 ms
コンパイル使用メモリ 7,680 KB
実行使用メモリ 28,160 KB
最終ジャッジ日時 2024-04-21 23:14:47
合計ジャッジ時間 5,677 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 245 ms
27,776 KB
testcase_01 AC 235 ms
27,776 KB
testcase_02 AC 239 ms
27,776 KB
testcase_03 AC 236 ms
27,776 KB
testcase_04 AC 433 ms
28,032 KB
testcase_05 AC 239 ms
27,776 KB
testcase_06 AC 238 ms
27,904 KB
testcase_07 AC 238 ms
28,032 KB
testcase_08 AC 281 ms
28,032 KB
testcase_09 AC 268 ms
28,032 KB
testcase_10 AC 275 ms
27,904 KB
testcase_11 AC 260 ms
28,032 KB
testcase_12 AC 350 ms
28,160 KB
testcase_13 AC 402 ms
28,032 KB
testcase_14 AC 472 ms
27,904 KB
testcase_15 AC 229 ms
28,032 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

def get_i() #空白区切の入力を数値(整数)の配列で返す
  return gets.chomp.split(" ").map(&:to_i)
end
def get_f() #空白区切の入力を数値(実数)の配列で返す
  return gets.chomp.split(" ").map(&:to_f)
end
def get() #空白区切の入力を文字列の配列で返す
  return gets.chomp.split(" ")
end
def get_nsp() #入力されたものを一文字ずつに区切った文字列の配列で返す
  return gets.chomp.split("")
end
def yn_judge(bool,y="Yes",n="No") #boolに真偽を投げることで、trueならy、falseならnの値を出力する
  return bool ? y : n 
end
def array(size,n=1,init=nil) #nに配列の次元数、sizeに配列の大きさ、initに初期値を投げることでその配列を返す
  if n==1
    return Array.new(size){init}
  else
    return Array.new(n).map{Array.new(size){init}}
  end
end

class BIT
  attr_accessor:node,:n
  def initialize(n)
    @n=n
    @node=array(@n+1,1,0)
  end

  def add(i,x)
    while i<=@n
      @node[i]+=x
      i|=i+1
    end
  end

  def sum(i)
    s=0
    while i>0
      s+=@node[i]
      i=(i&(i+1))-1
    end
    return s
  end

  def getSum(x,y)
    return sum(y)-sum(x-1)
  end
end

n,k=get_i
bit=BIT.new(1000_000)
weight=array(1000_000+1,1,0)
n.times do|i|
  w=gets.to_i
  if w>0
    if bit.getSum(w,1000_000)<k
      bit.add(w,1)
      weight[w]+=1
    end
  else
    if weight[w.abs]>0
      weight[w.abs]-=1
      bit.add(w.abs,-1)
    end
  end
end
puts bit.sum(1000_000)
0