122282024-12-10 08:09:21AzukitsuFasor (40)python3Futási hiba 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()
RészfeladatÖsszpontTesztVerdiktIdőMemória
base34/40
1Elfogadva0/016ms3320 KiB
2Elfogadva0/018ms4156 KiB
3Elfogadva2/216ms3124 KiB
4Futási hiba0/216ms3124 KiB
5Elfogadva2/216ms3112 KiB
6Elfogadva2/214ms2892 KiB
7Elfogadva2/217ms3128 KiB
8Elfogadva2/217ms3328 KiB
9Elfogadva2/217ms4152 KiB
10Elfogadva2/217ms4152 KiB
11Elfogadva2/218ms4096 KiB
12Elfogadva2/217ms3872 KiB
13Elfogadva2/250ms14700 KiB
14Futási hiba0/248ms14628 KiB
15Elfogadva2/282ms25576 KiB
16Elfogadva2/282ms26144 KiB
17Elfogadva2/279ms26336 KiB
18Elfogadva2/275ms26336 KiB
19Elfogadva2/283ms25032 KiB
20Futási hiba0/246ms11164 KiB
21Elfogadva2/278ms26208 KiB
22Elfogadva2/282ms24988 KiB