Submission #2575295


Source Code Expand

class Heap
    attr_reader :size
    def initialize
        @heap = []
        @size = 0
    end

    def length
        @size
    end

    def push(x)
        i = @size
        @size += 1
        while i > 0 do
            p = (i - 1) / 2
            break if @heap[p] <= x
            @heap[i] = @heap[p]
            i = p
        end
        @heap[i] = x
        self
    end

    def pop
        return nil if @size == 0
        ret = @heap[0]
        @size -= 1
        x = @heap[@size]
        i = 0
        while i * 2 + 1 < @size do
            a = i * 2 + 1
            b = a + 1
            if b < @size && @heap[b] < @heap[a]
                a = b
            end
            break if @heap[a] >= x
            @heap[i] = @heap[a]
            i = a
        end
        @heap[i] = x
        @heap.pop
        return ret
    end
end


N, K = gets.split.map(&:to_i)
xs = gets.split.map{|s| -s.to_i}
rev = {}
N.times do |i|
    rev[xs[i]] = i
end

heap = Heap.new
K.times do |i|
    heap.push(xs[i])
end
tmp = heap.pop
puts rev[tmp] + 1
heap.push(tmp)

(K...N).each do |i|
    heap.push(xs[i])
    heap.pop
    tmp = heap.pop
    puts rev[tmp] + 1
    heap.push(tmp)
end

Submission Info

Submission Time
Task B - 特別賞
User betrue12
Language Ruby (2.3.3)
Score 100
Code Size 1245 Byte
Status AC
Exec Time 977 ms
Memory 17932 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 40 / 40 60 / 60
Status
AC × 2
AC × 13
AC × 22
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
Subtask1 sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt
Subtask2 sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt
Case Name Status Exec Time Memory
sample_01.txt AC 7 ms 1788 KB
sample_02.txt AC 7 ms 1788 KB
subtask1_01.txt AC 7 ms 1788 KB
subtask1_02.txt AC 7 ms 1788 KB
subtask1_03.txt AC 7 ms 1788 KB
subtask1_04.txt AC 7 ms 1788 KB
subtask1_05.txt AC 14 ms 1916 KB
subtask1_06.txt AC 10 ms 1916 KB
subtask1_07.txt AC 8 ms 1916 KB
subtask1_08.txt AC 13 ms 1916 KB
subtask1_09.txt AC 12 ms 1916 KB
subtask1_10.txt AC 13 ms 1916 KB
subtask1_11.txt AC 12 ms 1916 KB
subtask2_01.txt AC 131 ms 3964 KB
subtask2_02.txt AC 14 ms 1916 KB
subtask2_03.txt AC 905 ms 17880 KB
subtask2_04.txt AC 279 ms 17676 KB
subtask2_05.txt AC 125 ms 15500 KB
subtask2_06.txt AC 852 ms 17932 KB
subtask2_07.txt AC 818 ms 17804 KB
subtask2_08.txt AC 977 ms 17804 KB
subtask2_09.txt AC 835 ms 17880 KB