Submission #57098548
Source Code Expand
Copy
class BITattr_accessor(:arr, :size)def initialize(n)@size = n@arr = Array.new(@size+1,0)enddef add(i,x)while i <= @size@arr[i] += xi += i & -iendenddef sum(i)sum = 0while i > 0sum += @arr[i]i &= i - 1endsum
class BIT attr_accessor(:arr, :size) def initialize(n) @size = n @arr = Array.new(@size+1,0) end def add(i,x) while i <= @size @arr[i] += x i += i & -i end end def sum(i) sum = 0 while i > 0 sum += @arr[i] i &= i - 1 end sum end def lower_bound(x) #「bitがx個立っているところ」を指す!bsearchの代わりに return -1 if x <= 0 ret = -1 k = 1 k <<= 1 while 2*k <= @size while k > 0 if ret+k < @size && @arr[ret+k+1] < x x -= @arr[ret+k+1] ret += k end k >>= 1 end ret + 2 end end n = gets.to_i a = gets.split.map(&:to_i) b = gets.split.map(&:to_i) bit_a = BIT.new(n+1) bit_b = BIT.new(n+1) n.times do |i| bit_a.add(i+1,a[i]) bit_b.add(i+1,1) if b[i] >= 2 end q = gets.to_i memo = {} q.times do query = gets.split.map(&:to_i) if query[0] == 1 i,x = query[1..] bit_a.add(i,x-a[i-1]) a[i-1] = x memo = {} elsif query[0] == 2 i,x = query[1..] if b[i-1] == 1 && x != 1 bit_b.add(i,1) elsif b[i-1] != 1 && x == 1 bit_b.add(i,-1) end b[i-1] = x memo = {} else l,r = query[1..] if memo[[l,r]] puts memo[[l,r]] else sum = 0 left = l right = r+1 while left < right if sum+a[left-1] < sum*b[left-1] sum *= b[left-1] else sum += a[left-1] end left_bit_count = bit_b.sum(left) next_left = bit_b.lower_bound(left_bit_count+1) next_left = right if next_left >= right sum += bit_a.sum(next_left-1) - bit_a.sum(left) left = next_left end memo[[l,r]] = sum puts sum end end end
Submission Info
Submission Time | |
---|---|
Task | G - Add and Multiply Queries |
User | konayuki |
Language | Ruby (ruby 3.2.2) |
Score | 575 |
Code Size | 1839 Byte |
Status | AC |
Exec Time | 1861 ms |
Memory | 32740 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 575 / 575 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 01_internal_00.txt, 01_internal_01.txt, 01_internal_02.txt, 01_internal_03.txt, 01_internal_04.txt, 01_internal_05.txt, 01_internal_06.txt, 01_internal_07.txt, 01_internal_08.txt, 01_internal_09.txt, 01_internal_10.txt, 01_internal_11.txt, 01_internal_12.txt, 01_internal_13.txt, 01_internal_14.txt, 01_internal_15.txt, 01_internal_16.txt, 01_internal_17.txt, 01_internal_18.txt, 01_internal_19.txt, 01_internal_20.txt, 01_internal_21.txt, 01_internal_22.txt, 01_internal_23.txt, 01_internal_24.txt, 01_internal_25.txt, 01_internal_26.txt, 01_internal_27.txt, 01_internal_28.txt, 01_internal_29.txt, 01_internal_30.txt, 01_internal_31.txt, 01_internal_32.txt, 01_internal_33.txt, 01_internal_34.txt, 01_internal_35.txt, 01_internal_36.txt, 01_internal_37.txt, 01_internal_38.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 99 ms | 17048 KB |
00_sample_01.txt | AC | 44 ms | 17392 KB |
01_internal_00.txt | AC | 258 ms | 19672 KB |
01_internal_01.txt | AC | 238 ms | 17884 KB |
01_internal_02.txt | AC | 1773 ms | 28396 KB |
01_internal_03.txt | AC | 1762 ms | 28200 KB |
01_internal_04.txt | AC | 1777 ms | 28284 KB |
01_internal_05.txt | AC | 1822 ms | 28584 KB |
01_internal_06.txt | AC | 1827 ms | 28272 KB |
01_internal_07.txt | AC | 1812 ms | 28344 KB |
01_internal_08.txt | AC | 1828 ms | 28220 KB |
01_internal_09.txt | AC | 1797 ms | 28428 KB |
01_internal_10.txt | AC | 1835 ms | 28276 KB |
01_internal_11.txt | AC | 1811 ms | 28552 KB |
01_internal_12.txt | AC | 312 ms | 27876 KB |
01_internal_13.txt | AC | 313 ms | 27312 KB |
01_internal_14.txt | AC | 312 ms | 28288 KB |
01_internal_15.txt | AC | 382 ms | 26908 KB |
01_internal_16.txt | AC | 385 ms | 27896 KB |
01_internal_17.txt | AC | 381 ms | 28084 KB |
01_internal_18.txt | AC | 1422 ms | 31924 KB |
01_internal_19.txt | AC | 1421 ms | 32256 KB |
01_internal_20.txt | AC | 1450 ms | 32640 KB |
01_internal_21.txt | AC | 1395 ms | 32600 KB |
01_internal_22.txt | AC | 1352 ms | 32244 KB |
01_internal_23.txt | AC | 1392 ms | 31980 KB |
01_internal_24.txt | AC | 1422 ms | 32396 KB |
01_internal_25.txt | AC | 1440 ms | 32740 KB |
01_internal_26.txt | AC | 1471 ms | 32692 KB |
01_internal_27.txt | AC | 1427 ms | 32360 KB |
01_internal_28.txt | AC | 324 ms | 28884 KB |
01_internal_29.txt | AC | 1844 ms | 28248 KB |
01_internal_30.txt | AC | 1766 ms | 28132 KB |
01_internal_31.txt | AC | 1790 ms | 28212 KB |
01_internal_32.txt | AC | 1828 ms | 28444 KB |
01_internal_33.txt | AC | 1747 ms | 28244 KB |
01_internal_34.txt | AC | 1861 ms | 28276 KB |
01_internal_35.txt | AC | 1769 ms | 28188 KB |
01_internal_36.txt | AC | 1830 ms | 28332 KB |
01_internal_37.txt | AC | 1800 ms | 28136 KB |
01_internal_38.txt | AC | 1752 ms | 28148 KB |