제출 #1121504

#제출 시각아이디문제언어결과실행 시간메모리
1121504vjudge1Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
326 ms20940 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long long+
int main(){
    ll n, m, n1, n2;
    cin>>n>>m;
    n1 = n / 2;
    n2 = n - n1;
    vector<ll> v1(n1, 0), v2(n2, 0);
    for (int i = 0; i < n1; i++){
        cin>>v1[i];
    }
    for (int i = 0; i < n2; i++){
        cin>>v2[i];
    }
    vector<ll> ar1, ar2;
    for (int i = 0; i < (1<<n1); i++){
        ll su = 0;
        for (int j = 0; j < n1; j++){
            int val = i & (1<<j);
            if (val != 0){
                su += v1[j];
            }
        }
        if (su <= m){
            ar1.push_back(su);
        }
    }
    for (int i = 0; i < (1<<n2); i++){
        ll su = 0;
        for (int j = 0; j < n2; j++){
            int val = i & (1<<j);
            if (val != 0){
                su += v2[j];
            }
        }
        if (su <= m){
            ar2.push_back(su);
        }
    }
    sort(ar1.begin(), ar1.end());
    sort(ar2.begin(), ar2.end());
    ll ans = 0;
    for (auto el : ar1){
        ll res = upper_bound(ar2.begin(), ar2.end(), m - el) - ar2.begin();
        ans += res;
    }
    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...