Cod sursa(job #2576429)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 6 martie 2020 19:23:14
Problema Deque Scor 30
Compilator py Status done
Runda Arhiva educationala Marime 1.17 kb
#!/bin/python3
import heapq
import os
import sys

#
# Complete the truckTour function below.
#
def solve(n, k, nums):

    min_queue = []
    pos_queue = []

    for i in range(k):

        while len(min_queue) > 0 and nums[i] < min_queue[len(min_queue) - 1]:
            min_queue.pop()
            pos_queue.pop()

        min_queue.append(nums[i])
        pos_queue.append(i)

    result = min_queue[0]

    for i in range(k, n):

        while len(pos_queue) > 0 and pos_queue[0] <= i - k:
            pos_queue.pop(0)
            min_queue.pop(0)

        while len(min_queue) > 0 and nums[i] < min_queue[len(min_queue) - 1]:
            min_queue.pop()
            pos_queue.pop()

        min_queue.append(nums[i])
        pos_queue.append(i)

        result += min_queue[0]

    return result

if __name__ == '__main__':

    in_fptr = open('deque.in', 'r')
    out_fptr = open('deque.out', 'w')

    n, k = map(int, in_fptr.readline().rstrip().split())

    nums = []

    for i in range(n):
        x = int(in_fptr.readline())
        nums.append(x)

    result = solve(n, k, nums)

    # print(result)

    out_fptr.write(str(result) + "\n")

    in_fptr.close()
    out_fptr.close()