Submission #44067838
Source Code Expand
class BIT
def initialize n
@n = n+1 # accessing 0..n-1, 1..n internally.
@a = [0]*@n
end
def [] i
i += 1
s = 0
while 0<i
s += @a[i]
i &= i-1
end
return s
end
def lb s
i,t,b = 0,0,1<<(@n-1).bit_length
t += @a[i|=b] if i|b<@n && t+@a[i|b]<s while 0<b >>= 1
return i if i<@n-1 # i は1大きい内部インデックス(もしくは 0)だけど、求めた添字が s 未満の値を返す最大の添字であり、s の lower_bound としては +1 したものを返したいから、足し引きして内部インデックスそのままの値を返す(アクセス可能な範囲(0...@n-1)なら)。
end
def add i,d
i += 1
while i<@n
@a[i] += d
i += i&-i
end
end
def inc i; add i,1 end
def dec i; add i,-1 end
end
(N,M),*TX = $<.map{|ln| ln.split.map(&:to_i) }
T = [],[],[]
TX.each{|t,x|
T[t]<<x
}
T.each(&:sort!)
X = 0,*TX.map{_2}.uniq.sort.reverse
I = X.each_with_index.to_h
Ord = BIT.new I.size+1
Sum = BIT.new I.size+1
T[0].each{|x|
i = I[x]
Ord.inc i
Sum.add i,x
}
p [0,*T[2].reverse].map.with_index{|co,dm|
co.times{
x = T[1].pop
break if ! x
i = I[x]
Ord.inc i
Sum.add i,x
}
m = M-dm
next 0 if m<1
i = Ord.lb m
next Sum[I.size] if ! i
next 0 if i<1
m -= Ord[i-1]
next Sum[i-1]+m*X[i]
}.max
Submission Info
| Submission Time | |
|---|---|
| Task | F - Cans and Openers |
| User | ds14050 |
| Language | Ruby (2.7.1) |
| Score | 500 |
| Code Size | 1344 Byte |
| Status | AC |
| Exec Time | 696 ms |
| Memory | 51104 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample00.txt, sample01.txt, sample02.txt |
| All | sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample00.txt | AC | 56 ms | 14128 KiB |
| sample01.txt | AC | 61 ms | 14204 KiB |
| sample02.txt | AC | 57 ms | 14212 KiB |
| testcase00.txt | AC | 649 ms | 47576 KiB |
| testcase01.txt | AC | 391 ms | 47792 KiB |
| testcase02.txt | AC | 696 ms | 51104 KiB |
| testcase03.txt | AC | 611 ms | 45664 KiB |
| testcase04.txt | AC | 649 ms | 45520 KiB |
| testcase05.txt | AC | 639 ms | 44200 KiB |
| testcase06.txt | AC | 654 ms | 45612 KiB |
| testcase07.txt | AC | 429 ms | 45688 KiB |
| testcase08.txt | AC | 503 ms | 45272 KiB |
| testcase09.txt | AC | 517 ms | 44804 KiB |
| testcase10.txt | AC | 591 ms | 45808 KiB |
| testcase11.txt | AC | 439 ms | 45616 KiB |
| testcase12.txt | AC | 505 ms | 45260 KiB |
| testcase13.txt | AC | 490 ms | 44540 KiB |
| testcase14.txt | AC | 606 ms | 45312 KiB |
| testcase15.txt | AC | 405 ms | 45160 KiB |
| testcase16.txt | AC | 504 ms | 45060 KiB |
| testcase17.txt | AC | 529 ms | 45548 KiB |
| testcase18.txt | AC | 602 ms | 45460 KiB |
| testcase19.txt | AC | 406 ms | 44756 KiB |
| testcase20.txt | AC | 508 ms | 45040 KiB |
| testcase21.txt | AC | 515 ms | 45232 KiB |
| testcase22.txt | AC | 610 ms | 45544 KiB |
| testcase23.txt | AC | 607 ms | 44972 KiB |
| testcase24.txt | AC | 656 ms | 45136 KiB |
| testcase25.txt | AC | 573 ms | 44892 KiB |
| testcase26.txt | AC | 638 ms | 46008 KiB |
| testcase27.txt | AC | 608 ms | 38840 KiB |
| testcase28.txt | AC | 690 ms | 42380 KiB |
| testcase29.txt | AC | 596 ms | 39912 KiB |
| testcase30.txt | AC | 684 ms | 43132 KiB |
| testcase31.txt | AC | 593 ms | 39804 KiB |
| testcase32.txt | AC | 631 ms | 42752 KiB |
| testcase33.txt | AC | 659 ms | 42656 KiB |
| testcase34.txt | AC | 689 ms | 42944 KiB |
| testcase35.txt | AC | 613 ms | 39152 KiB |
| testcase36.txt | AC | 680 ms | 42688 KiB |
| testcase37.txt | AC | 661 ms | 42652 KiB |
| testcase38.txt | AC | 569 ms | 42932 KiB |
| testcase39.txt | AC | 613 ms | 40636 KiB |
| testcase40.txt | AC | 673 ms | 43016 KiB |
| testcase41.txt | AC | 663 ms | 41096 KiB |
| testcase42.txt | AC | 589 ms | 43292 KiB |