117642024-11-09 16:42:16balintSokszorozott maximumokpython3Időlimit túllépés 11/1002.101s26924 KiB
import heapq
from functools import reduce


def product_of_k_largest(numbers, k):
    # Use a min-heap to store the k largest elements
    min_heap = []

    for num in numbers:
        # Push the current number onto the heap
        heapq.heappush(min_heap, num)

        # If the heap grows beyond size k, remove the smallest element
        if len(min_heap) > k:
            heapq.heappop(min_heap)

    # Compute the product of the k largest elements
    return reduce(lambda x, y: x * y, min_heap, 1)


def main():
    MOD = 10**9 + 7
    N, Q = map(int, input().split())
    nums = list(map(int, input().split()))
    for _ in range(Q):
        L, R, k = map(int, input().split())
        sub = nums[L : R + 1]
        mul = product_of_k_largest(sub, k)  # prod(sorted(sub, reverse=True)[:k])
        print(mul % MOD)


main()
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva21ms3640 KiB
subtask211/11
2Elfogadva39ms3640 KiB
3Elfogadva43ms3660 KiB
4Elfogadva280ms3800 KiB
5Elfogadva717ms3896 KiB
6Elfogadva21ms3644 KiB
7Elfogadva185ms3724 KiB
subtask30/13
8Elfogadva35ms3640 KiB
9Elfogadva41ms3708 KiB
10Elfogadva287ms3892 KiB
11Időlimit túllépés2.076s14556 KiB
12Időlimit túllépés2.079s26696 KiB
13Időlimit túllépés2.101s26756 KiB
subtask40/19
14Időlimit túllépés2.082s22088 KiB
15Időlimit túllépés2.081s24516 KiB
16Időlimit túllépés2.082s25612 KiB
17Időlimit túllépés2.082s26700 KiB
18Időlimit túllépés2.078s26924 KiB
subtask50/25
19Időlimit túllépés2.082s9252 KiB
20Időlimit túllépés2.084s8332 KiB
21Időlimit túllépés2.082s8708 KiB
22Időlimit túllépés2.082s9728 KiB
23Időlimit túllépés2.086s6464 KiB
subtask60/32
24Időlimit túllépés2.082s26700 KiB
25Időlimit túllépés2.082s26700 KiB
26Időlimit túllépés2.081s22096 KiB
27Időlimit túllépés2.081s24408 KiB
28Időlimit túllépés2.081s25748 KiB
29Időlimit túllépés2.081s26704 KiB
30Időlimit túllépés2.082s23792 KiB