105922024-04-06 11:04:40MagyarKendeSZLGLádapakolás raktárban (50)cpp17Elfogadva 50/5056ms12860 KiB
#include <bits/stdc++.h>

#define cinv(v) for (auto& e : v) cin >> e;
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define size(v) (int)v.size()
#define has(s, e) s.count(e)

using namespace std;
using ll = long long;

int main() {
    cin.tie(0), ios::sync_with_stdio(0);

    int N, M;
    cin >> N >> M;

    vector<int> boxS(N);
    cinv(boxS);

    bool growing = 1;
    unordered_set<int> s;
    int total_size = 0, towers_count = 0, last = 0;

    for (int i = 0; i < N; i++) {
        if (s.empty()) {
            towers_count++;
            total_size += boxS[i];
            last = boxS[i];
            s.insert(boxS[i]);
            continue;
        }

        if (total_size + boxS[i] > M || has(s, boxS[i]) || (!growing  && boxS[i] > last)) {
            growing = 1;
            s.clear();
            total_size = 0;
            i--; // a következő iterációban fogunk foglalkozni az elemmel újra
            continue;
        }

        if (boxS[i] < last) {
            growing = 0;
        }

        last = boxS[i];
        total_size += boxS[i];
        s.insert(boxS[i]);
    }

    cout << N - towers_count;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1828 KiB
2Elfogadva0/04ms2196 KiB
3Elfogadva2/23ms2276 KiB
4Elfogadva2/23ms2492 KiB
5Elfogadva2/23ms2708 KiB
6Elfogadva2/23ms2920 KiB
7Elfogadva2/23ms3152 KiB
8Elfogadva2/23ms3372 KiB
9Elfogadva3/33ms3576 KiB
10Elfogadva2/23ms3656 KiB
11Elfogadva2/23ms3664 KiB
12Elfogadva2/23ms3684 KiB
13Elfogadva3/34ms4032 KiB
14Elfogadva3/34ms4032 KiB
15Elfogadva3/34ms4124 KiB
16Elfogadva2/220ms5084 KiB
17Elfogadva3/323ms6016 KiB
18Elfogadva3/327ms7148 KiB
19Elfogadva3/323ms7672 KiB
20Elfogadva3/323ms11100 KiB
21Elfogadva3/356ms11476 KiB
22Elfogadva3/339ms12860 KiB