222682026-01-14 19:07:49szabelrLádapakolás raktárban (50)cpp17Wrong answer 32/5016ms536 KiB
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // Gyors I/O
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    long long m;
    if (!(cin >> n >> m)) return 0;

    int stacks = 0;          // Kupacok száma
    long long current_sum = 0; // Jelenlegi kupac összege
    long long last_height = 0; // Előző láda magassága (legyen long long!)
    bool descending = false;   // Csökkenő ágban vagyunk-e

    for (int i = 0; i < n; i++)
    {
        long long x; // Használjunk long long-ot a biztonság kedvéért
        cin >> x;

        bool cut = false; // Kell-e vágni (új kupacot kezdeni)

        if (stacks == 0) {
            // Legelső láda
            cut = true;
        }
        else {
            // 1. Kapacitás ellenőrzése
            if (current_sum + x > m) {
                cut = true;
            }
            // 2. Egyenlőség ellenőrzése (szigorúan nagyobbra/kisebbre kell rakni)
            else if (x == last_height) {
                cut = true;
            }
            // 3. Geometriai ellenőrzése (Völgy detektálása)
            // Ha már csökkenő ágban vagyunk, és hirtelen jön egy nagyobb láda
            else if (descending && x > last_height) {
                cut = true;
            }
        }

        if (cut) {
            stacks++;           // Ăšj kupac
            current_sum = x;    // Az új kupac összege maga az x
            last_height = x;    // Utolsó magasság beállítása
            descending = false; // Minden új kupac "felfelé" (vagy semlegesen) indul
        }
        else {
            // Hozzáadjuk a jelenlegihez
            current_sum += x;
            
            // Ha csökkenő lépést teszünk, beállítjuk a flaget
            if (x < last_height) {
                descending = true;
            }
            // Ha x > last_height, akkor a descending false marad (emelkedő ág)
            
            last_height = x;
        }
    }

    // Megspórolt helyek = Összes láda - Kupacok száma
    cout << n - stacks << endl;

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base32/50
1Accepted0/01ms316 KiB
2Wrong answer0/02ms508 KiB
3Accepted2/21ms316 KiB
4Wrong answer0/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms536 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms508 KiB
9Accepted3/32ms512 KiB
10Accepted2/22ms316 KiB
11Accepted2/22ms316 KiB
12Wrong answer0/22ms316 KiB
13Accepted3/32ms316 KiB
14Wrong answer0/32ms420 KiB
15Accepted3/32ms352 KiB
16Wrong answer0/210ms508 KiB
17Accepted3/313ms424 KiB
18Accepted3/316ms508 KiB
19Accepted3/39ms316 KiB
20Wrong answer0/310ms500 KiB
21Wrong answer0/39ms420 KiB
22Wrong answer0/312ms508 KiB