176052025-08-09 14:33:24BucsMateLádapakolás raktárban (50)cpp17Elfogadva 50/5052ms3076 KiB
#include <iostream>
#include <set>
#include <vector>

using namespace std;

int main()
{
    int N, M;
    cin >> N >> M;
    vector<int> heights(N+1);

    for(int i = 1; i <= N; ++i){
        cin >> heights[i];
    }

    set<int> currTower;
    currTower.insert(heights[1]);
    int currHeight = heights[1];
    bool increasing = true;
    int nrTowers = 1;

    for(int i = 2; i <= N; i++){
        if(currTower.find(heights[i]) != currTower.end() || currHeight + heights[i] > M){
            nrTowers++;
            currTower.clear();
            currTower.insert(heights[i]);
            currHeight = heights[i];
            increasing = true;
        }
        else if((heights[i-1] < heights[i]) == increasing){
            currTower.insert(heights[i]);
            currHeight += heights[i];
        }
        else if(increasing){
            currTower.insert(heights[i]);
            currHeight += heights[i];
            increasing = false;
        }
        else{
            nrTowers++;
            currTower.clear();
            currTower.insert(heights[i]);
            currHeight = heights[i];
            increasing = true;
        }
    }
    cout << N - nrTowers;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/04ms316 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms592 KiB
7Elfogadva2/21ms556 KiB
8Elfogadva2/21ms408 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms316 KiB
12Elfogadva2/22ms316 KiB
13Elfogadva3/33ms316 KiB
14Elfogadva3/34ms316 KiB
15Elfogadva3/34ms316 KiB
16Elfogadva2/230ms1176 KiB
17Elfogadva3/341ms1332 KiB
18Elfogadva3/350ms1556 KiB
19Elfogadva3/335ms1364 KiB
20Elfogadva3/352ms2936 KiB
21Elfogadva3/345ms2868 KiB
22Elfogadva3/348ms3076 KiB