제출 #1121565

#제출 시각아이디문제언어결과실행 시간메모리
1121565vjudge1Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
391 ms8808 KiB
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
#define int long long
using namespace std;

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;
    int a[n];
    for(int &i : a) cin >> i;
    if(n == 1)
    {
        if(a[0] <= m) cout << 2;
        else cout << 1;
        return 0;
    }
    vector<int> v;
    for(int i = 0; i < (1 << (n / 2)); i++)
    {
        int s = 0;
        for(int j = 0; j < n / 2; j++)
        {
            if((1 << j) & i) s += a[j];
        }
        if(s <= m) 
        {
            v.push_back(s);
        }
    }
    sort(all(v));
    int ans = 0;
    for(int i = 0; i < (1 << (n - n / 2)); i++)
    {
        int s = 0;
        for(int j = n / 2; j < n; j++)
        {
            if((1 << (j - n / 2)) & i) s += a[j];
        }
        if(s <= m)
        {
            ans += upper_bound(all(v), m - s) - v.begin();
        }
    }
    cout << ans;
}  
#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...