제출 #1330337

#제출 시각아이디문제언어결과실행 시간메모리
1330337paronmanukyanIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
443 ms20856 KiB
#include <bits/stdc++.h>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

#define all(x) x.begin(), x.end()
#define ll long long
#define V vector
#define pb push_back
#define FASTIO ios_base::sync_with_stdio(false); cin.tie(nullptr);

int main()
{
    FASTIO

    int n; ll m;
    cin >> n >> m;

    V<ll> a(n + 1);
    for(int i = 1; i <= n; i++)
        cin >> a[i];

    int fsz = n >> 1;
    int ssz = n - fsz;

    V<ll> fr, sc;

    for(int i = 1; i <= fsz; i++)
        fr.pb(a[i]);

    for(int i = 1; i <= ssz; i++)
        sc.pb(a[i + fsz]);

    V<ll> sm1, sm2;

    for(int mask = 0; mask < (1 << fsz); mask++){
        ll sum = 0;
        for(int i = 0; i < fsz; i++)
            if(mask & (1 << i))
                sum += fr[i];
        sm1.pb(sum);
    }

    for(int mask = 0; mask < (1 << ssz); mask++){
        ll sum = 0;
        for(int i = 0; i < ssz; i++)
            if(mask & (1 << i))
                sum += sc[i];
        sm2.pb(sum);
    }

    sort(all(sm2));

    ll ans = 0;

    for(ll x : sm1) {
        ans += upper_bound(all(sm2), m - x) - sm2.begin();
    }

    cout << ans << "\n";
}
#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...