Submission #1219597

#TimeUsernameProblemLanguageResultExecution timeMemory
1219597LucaIlieIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
317 ms8620 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 40;
long long v[MAX_N];
vector<long long> costs;


int main() {
    int n;
    long long m;

    cin >> n >> m;
    for (int i = 0; i < n; i++)
        cin >> v[i];

    int k = n / 2;
    for (int mask = 0; mask < (1 << k); mask++) {
        long long c = 0;
        for (int i = 0; i < k; i++) 
            c += v[i] * ((mask >> i) & 1);
        costs.push_back(c); 
    }

    sort(costs.begin(), costs.end());

    long long ans = 0;
    for (int mask = 0; mask < (1 << (n - k)); mask++) {
        long long c = 0;
        for (int i = 0; i < n - k; i++) 
            c += v[i + k] * ((mask >> i) & 1);
        ans += upper_bound(costs.begin(), costs.end(), m - c) - costs.begin();
    }

    cout << ans << "\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...