146892025-01-27 20:02:01feheristvanLeggyorsabb pénzkeresés (50)cpp17Accepted 50/5030ms796 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int minNap(int n, int p, int db, int ossz, const vector<int>& v) {
    // Base case: If the target is reached, return the current day count
    if (ossz >= p) {
        return db;
    }
    // Base case: If no more elements are left, return an impossible value
    if (n < 0) {
        return INT_MAX;
    }
    // Recursive step: Explore both including and excluding the current day
    int include = minNap(n - 1, p, db + 1, ossz + v[n], v); // Include the current day's work
    int exclude = minNap(n - 1, p, db, ossz, v);           // Skip the current day

    // Return the minimum of the two results
    return min(include, exclude);
}

int main() {
    int n, p;
    cin >> n >> p;
    vector<int> v(n);
    for (auto& i : v)
        cin >> i;
    int ossz = v[0], db = 1, mindb = INT_MAX, elso = 0, i = 1;
    for(int i = 1; i < n; i ++){
        if(ossz < p){
            ossz += v[i];
            db ++;
        }
        while(ossz >= p){
            if(mindb > db){
                mindb = db;
            }
            ossz -= v[elso];
            elso += 1;
            db --;
        }
    }
    cout << mindb;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/030ms748 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/24ms316 KiB
7Accepted2/24ms316 KiB
8Accepted2/24ms316 KiB
9Accepted2/24ms316 KiB
10Accepted2/24ms316 KiB
11Accepted2/229ms564 KiB
12Accepted2/230ms564 KiB
13Accepted2/230ms796 KiB
14Accepted2/230ms564 KiB
15Accepted2/230ms564 KiB
16Accepted2/230ms564 KiB
17Accepted2/229ms564 KiB
18Accepted2/230ms564 KiB
19Accepted2/230ms760 KiB
20Accepted2/229ms756 KiB
21Accepted2/229ms564 KiB
22Accepted2/229ms564 KiB
23Accepted2/230ms564 KiB
24Accepted2/230ms756 KiB
25Accepted2/230ms564 KiB
26Accepted2/230ms564 KiB
27Accepted2/230ms756 KiB