122282024-12-10 08:09:21AzukitsuFasor (40)python3Runtime error 34/4083ms26336 KiB
# maximumot kell megtalalnunk egy 2*K + 1 (bagoly fája) intervallumban
# csak az uj elemet kell bevennünk és hasonlítanunk mig a regit eltavolitjuk
# figyelni kell arra, hogy a bal indexet csak akkor kezdhetjuk, ha mar i K + 1-nel tart, erre lehet venni egy maximumot (0, i-(K+1)) között
# lehet nem is kell figyelembe vennünk a bal szarnyat, mert jobb oldalon fognak mindig megjelenni ujjak

# példa
# 10 3
# 6 2 1 8 4 8 7 12 9 3
# i = 0
# selected = 6
# jobb = i + K + 1
# maximum keresése (sima függvénnyel)

# nem is kell vegigmennunk az osszesen! hiszen ha csak az uj maximumhoz megyunk, es megnezzuk, hogy o-e a maximum az uj intervallumban, akkor is megtalaljuk a legmagasabb fat

def main():
    be = input().split()
    N = int(be[0])
    K = int(be[1])
    fasor = list(map(int, input().split()))
    selected = 0
    index = 0
    while True:
        jobb = selected + K + 1
        current = fasor[selected]
        maxi = current
        for i in range(selected, jobb):
            if maxi < fasor[i]:
                maxi = fasor[i]
                index = i

        if current < maxi:
            selected = index
        elif current == maxi:
            break
    print(index+1)
    
main()
SubtaskSumTestVerdictTimeMemory
base34/40
1Accepted0/016ms3320 KiB
2Accepted0/018ms4156 KiB
3Accepted2/216ms3124 KiB
4Runtime error0/216ms3124 KiB
5Accepted2/216ms3112 KiB
6Accepted2/214ms2892 KiB
7Accepted2/217ms3128 KiB
8Accepted2/217ms3328 KiB
9Accepted2/217ms4152 KiB
10Accepted2/217ms4152 KiB
11Accepted2/218ms4096 KiB
12Accepted2/217ms3872 KiB
13Accepted2/250ms14700 KiB
14Runtime error0/248ms14628 KiB
15Accepted2/282ms25576 KiB
16Accepted2/282ms26144 KiB
17Accepted2/279ms26336 KiB
18Accepted2/275ms26336 KiB
19Accepted2/283ms25032 KiB
20Runtime error0/246ms11164 KiB
21Accepted2/278ms26208 KiB
22Accepted2/282ms24988 KiB