196352025-12-17 15:32:04birozsLádapakolás raktárban (50)python3Hibás válasz 6/50287ms14828 KiB
N,M = map(int,input().split())
T = list(map(int,input().split()))
T = [0] + T[:]
ToronySzam = 0
i = 2
#Növekvőből csökkenő
while i < N:
    if T[i-1] < T[i] > T[i+1]:
        bal = i
        while bal - 1 > 0 and T[bal] > T[bal-1]:
            bal -= 1
        jobb = i
        while jobb + 1 <= N and T[jobb] > T[jobb+1]:
            jobb += 1
        Csucs = i
        i = jobb + 1
        ToronySzam += 1
        Meret = T[Csucs]
        Felso = T[Csucs]
        T[Csucs] = 0
        Lehet = True
        b = Csucs-1
        j = Csucs+1
        while (b >= bal or j <= jobb) and Lehet:
            Par = [0,0]
            if b >= bal:
                Par[0] = T[b]
            if j <= jobb:
                Par[1] = T[j]
            if Par[0] < Felso and Par[0] > Par[1] and Par[0] + Meret <= M:
                Meret += T[b]
                Felso = T[b]
                T[b] = 0
                b -= 1
            elif Par[1] < Felso and Par[0] < Par[1] and Par[1] + Meret <= M:
                Meret += T[j]
                Felso = T[j]
                T[j] = 0
                j += 1
            else:
                Lehet = False
    else:
        i += 1
#print(T)
#Csökkenő
for i in range(1,N):
    if T[i-1]*T[i] != 0 and T[i] < T[i-1]:
        ToronySzam += 1
        Meret = T[i-1]
        Felso = T[i-1]
        T[i-1] = 0
        jobb = i
        while jobb <= N and Meret + T[jobb] <= M and T[jobb] < Felso:
            Meret += T[jobb]
            Felso = T[jobb]
            T[jobb] = 0
            jobb += 1
#print(T)

#Növekvő
for i in range(1,N):
    if T[i-1]*T[i] != 0 and T[i] > T[i-1]:
        ToronySzam += 1
        Meret = T[i-1]
        Felso = T[i-1]
        T[i-1] = 0
        jobb = i
        while jobb <= N and Meret + T[jobb] <= M and T[jobb] > Felso:
            Meret += T[jobb]
            Felso = T[jobb]
            T[jobb] = 0
            jobb += 1
#print(T)


ToronySzam += (N - T.count(0) + 1)
print(N-ToronySzam)

        



     



RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/017ms3124 KiB
2Hibás válasz0/041ms4296 KiB
3Elfogadva2/217ms3332 KiB
4Hibás válasz0/217ms3124 KiB
5Elfogadva2/217ms3256 KiB
6Hibás válasz0/217ms3212 KiB
7Elfogadva2/217ms3264 KiB
8Hibás válasz0/217ms3124 KiB
9Hibás válasz0/317ms3264 KiB
10Hibás válasz0/217ms3348 KiB
11Hibás válasz0/217ms3372 KiB
12Hibás válasz0/225ms3632 KiB
13Hibás válasz0/330ms3844 KiB
14Hibás válasz0/339ms4068 KiB
15Hibás válasz0/343ms4508 KiB
16Időlimit túllépés0/2287ms14328 KiB
17Időlimit túllépés0/3284ms14828 KiB
18Időlimit túllépés0/3284ms14172 KiB
19Hibás válasz0/3179ms12804 KiB
20Időlimit túllépés0/3230ms14020 KiB
21Időlimit túllépés0/3219ms12856 KiB
22Időlimit túllépés0/3252ms14336 KiB