198092025-12-24 00:02:04mzperxKét ajándékpython3Wrong answer 30/10037ms9104 KiB
def parkereses(N: int, E):
    olcso=0
    draga=0
    osszeg=0
    globalMax=100000000+1
    while True:
        #maximum
        max=0
        maxPos=0
        # a következő ciklus megkeresi az eddig érintett elemek közül a legnagyobbat.
        # a globalmax szerepét nem sejtem, értem - még.
        for i in range(0, N):
            if E[i]<globalMax and E[i]>=max:
                max=E[i]
                maxPos=i
        # itt már megvan a max, mint a legnagyobb a teljes listában és a pozíciója
        # elgondolkodtam, hogy kaphatok-e más eredményt egy ismételt végrehajtás során
        # aztán rájöttem, hogy a korábban talált max értéknél kisebbek közül keresi a legnagyobbat
        # kérdés, hogy vajon az egyenlő nagyok közül melyiket találja meg 
        # - válasz: az E[i]>= miatt az utolsót
        if max>0:
            # az alábbinak az a szerepe, hogy ha olyan maximumot találtunk, 
            # amely kisebb az eddig meghatározott összeg felénél, akkor nem kell vele foglalkoznunk,
            # mert nem tudunk hozzá jó párt találni, ezért van a break
            if max<osszeg/2:
                break
            #párkeresés
            max2=0
            maxPos2=0
            # a következő ciklus keresi a legnagyobbat az elejéről
            # ugyanaz az algoritmus csak a globalMax helyét a max veszi át 
            for i in range(0, maxPos):
                if E[i]>max2 and E[i]<max:
                    max2=E[i]
                    maxPos2=i
        # ha valamelyik maximum 0, akkor nyilván nem találtunk, nem kell vele foglalkozni,
        # az olcso, draga értékét nem változtatjuk meg, ez a while cikluson kívül fontos lesz. 
        if max==0 or max2==0:
            break
        # ha a megtalált maximumok összege magasabb az eddigi összegnél, akkor megőrizzük a pozíciókat
        if max+max2>osszeg:
            osszeg=max+max2
            olcso=maxPos2
            draga=maxPos
        # azért állítjuk be a globalMax-ot, hogy a max-nál kisebb értéket keressünk a következő "körben"
        globalMax=max
    # az alábbi elágazásban elég lenne a drága pozícióját vizsgálni, mert az olcsóé lehetne 0
    if olcso==0 and draga==0:
        return 0, 0
    return olcso+1, draga+1

def futtatas():
    N=int(input())
    E=list(map(int,input().split()))
    a, b=parkereses(N, E)
    print(a, b)

#test()
futtatas()
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted17ms3124 KiB
2Accepted37ms7216 KiB
subtask210/10
3Accepted16ms3124 KiB
4Accepted16ms3104 KiB
5Accepted16ms2980 KiB
6Accepted17ms3176 KiB
7Accepted17ms2952 KiB
subtask310/10
8Accepted16ms3268 KiB
9Accepted16ms3392 KiB
10Accepted16ms3164 KiB
11Accepted16ms3124 KiB
12Accepted16ms3124 KiB
subtask40/20
13Wrong answer17ms3124 KiB
14Accepted16ms3232 KiB
15Wrong answer17ms3124 KiB
16Accepted16ms3144 KiB
17Accepted17ms3116 KiB
18Wrong answer17ms3128 KiB
19Accepted17ms3308 KiB
20Accepted16ms3120 KiB
21Accepted16ms3208 KiB
22Accepted17ms3048 KiB
subtask510/10
23Accepted17ms3380 KiB
24Accepted18ms3324 KiB
25Accepted18ms3824 KiB
26Accepted18ms3636 KiB
27Accepted19ms3760 KiB
subtask60/10
28Wrong answer19ms4316 KiB
29Wrong answer19ms4128 KiB
30Wrong answer19ms4128 KiB
31Wrong answer19ms4312 KiB
32Wrong answer18ms4136 KiB
subtask70/10
33Wrong answer28ms6328 KiB
34Wrong answer28ms6472 KiB
35Wrong answer26ms6448 KiB
36Wrong answer27ms6300 KiB
37Wrong answer28ms6332 KiB
subtask80/30
38Wrong answer32ms7568 KiB
39Wrong answer32ms7792 KiB
40Wrong answer34ms7692 KiB
41Wrong answer34ms8284 KiB
42Wrong answer32ms8352 KiB
43Wrong answer35ms8916 KiB
44Wrong answer37ms9104 KiB
45Wrong answer37ms8916 KiB
46Wrong answer35ms8916 KiB
47Wrong answer35ms8916 KiB
48Wrong answer35ms8916 KiB
49Wrong answer35ms9056 KiB
50Wrong answer35ms8916 KiB
51Wrong answer35ms8936 KiB
52Wrong answer37ms9012 KiB