117652024-11-09 16:44:39balintSokszorozott maximumokpython3Időlimit túllépés 11/1002.101s70260 KiB
from math import prod
from collections import defaultdict


def main():
    MOD = 10**9 + 7
    N, Q = map(int, input().split())
    nums = list(map(int, input().split()))

    # Memoization caches
    sorted_cache = defaultdict(list)  # Cache for sorted subarrays
    product_cache = {}  # Cache for product of top k elements

    # Function to compute the product of top k elements
    def get_top_k_product(L, R, k):
        # If we already have the result in the cache, return it
        if (L, R, k) in product_cache:
            return product_cache[(L, R, k)]

        # Otherwise, compute it from scratch
        sub = nums[L : R + 1]
        if (L, R) not in sorted_cache:
            sorted_cache[(L, R)] = sorted(
                sub, reverse=True
            )  # Sort only once for each range
        top_k = sorted_cache[(L, R)][:k]

        # Calculate the product of the top k elements
        result = prod(top_k) % MOD
        product_cache[(L, R, k)] = result  # Cache the result

        return result

    # Process queries
    for _ in range(Q):
        L, R, k = map(int, input().split())
        print(get_top_k_product(L, R, k))


main()
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva19ms3384 KiB
subtask211/11
2Elfogadva29ms3640 KiB
3Elfogadva35ms3976 KiB
4Elfogadva180ms9016 KiB
5Elfogadva515ms14968 KiB
6Elfogadva19ms3384 KiB
7Elfogadva119ms7468 KiB
subtask30/13
8Elfogadva29ms3636 KiB
9Elfogadva34ms3892 KiB
10Elfogadva252ms9268 KiB
11Időlimit túllépés2.091s14320 KiB
12Időlimit túllépés2.088s26700 KiB
13Időlimit túllépés2.101s26696 KiB
subtask40/19
14Időlimit túllépés2.089s68656 KiB
15Időlimit túllépés2.091s66188 KiB
16Időlimit túllépés2.091s68164 KiB
17Időlimit túllépés2.089s70080 KiB
18Időlimit túllépés2.089s70260 KiB
subtask50/25
19Időlimit túllépés2.081s14900 KiB
20Időlimit túllépés2.079s13308 KiB
21Időlimit túllépés2.081s14072 KiB
22Időlimit túllépés2.081s14780 KiB
23Időlimit túllépés2.079s17664 KiB
subtask60/32
24Időlimit túllépés2.085s26700 KiB
25Időlimit túllépés2.085s26700 KiB
26Időlimit túllépés2.085s22100 KiB
27Időlimit túllépés2.085s24264 KiB
28Időlimit túllépés2.085s27112 KiB
29Időlimit túllépés2.085s26700 KiB
30Időlimit túllépés2.085s24560 KiB