235622026-01-24 19:26:02miszorimarciLádapakolás raktárban (50)cpp17Hibás válasz 32/5048ms1080 KiB
#include <bits/stdc++.h>

using namespace std;

int L[100005];
int dp[100005];

int main() {
    int N, M; cin >> N >> M;
    for (int i = 1; i <= N; ++i)cin >> L[i];
    

    int mt_start = 1;
    int sum_start = 1;
    long long sum = 0;
    bool dec = false;

    dp[0] = 0;

    for (int i = 1; i <= N; ++i) {
        if (i > 1) {
            if (L[i] > L[i - 1]) {
                if (dec) {
                    mt_start = i - 1;
                    dec = false;
                }
            } else if (L[i] < L[i - 1]) {
                dec = true;
            } else {
                mt_start = i;
                dec = false;
            }
        }

        sum += L[i];
        while (sum > M) {
            sum -= L[sum_start];
            sum_start++;
        }
        int j = max(mt_start, sum_start);
        dp[i] = 1 + dp[j - 1];
    }

    cout << N-dp[N];
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base32/50
1Elfogadva0/01ms508 KiB
2Hibás válasz0/03ms512 KiB
3Elfogadva2/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Elfogadva2/21ms508 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms500 KiB
12Hibás válasz0/22ms500 KiB
13Elfogadva3/32ms512 KiB
14Hibás válasz0/33ms316 KiB
15Elfogadva3/34ms508 KiB
16Hibás válasz0/228ms1072 KiB
17Elfogadva3/337ms1024 KiB
18Elfogadva3/348ms1080 KiB
19Elfogadva3/328ms1036 KiB
20Hibás válasz0/329ms1076 KiB
21Hibás válasz0/328ms908 KiB
22Hibás válasz0/332ms940 KiB