Submission #1163263

#TimeUsernameProblemLanguageResultExecution timeMemory
1163263cpismayilmmdv985Ice Hockey World Championship (CEOI15_bobek)C++20
0 / 100
125 ms5516 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    int N, X;
    cin >> N >> X;
    int N1 = N >> 1, N2 = N - N1;
    vector<int> A(N1), B(N2);
    map<int, int> mp;
    int64_t res = 0;

    for (auto &a : A)
        cin >> a;

    for (auto &b : B)
        cin >> b;

    for (int mask = 1; mask < (1 << N1); mask++) {
        int sum = 0;
        bool flag = true;

        for (int i = 0; i < N1; i++)
            if (mask & (1 << i)) {
                if (sum + A[i] > X) {
                    flag = false;
                    break;
                }

                sum += A[i];
            }

        if (!flag)
            continue;

        if (sum < X)
            mp[sum]++;
        
        res += sum == X;
    }

    for (int mask = 1; mask < (1 << N2); mask++) {
        int sum = 0;
        bool flag = true;

        for (int i = 0; i < N2; i++)
            if (mask & (1 << i)) {
                if (sum + B[i] > X) {
                    flag = false;
                    break;
                }

                sum += B[i];
            }

        if (!flag)
            continue;

        res += sum == X;

        if (sum < X && mp.count(X - sum))
            res += mp[X - sum];
    }

    cout << res;
    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...