제출 #1121490

#제출 시각아이디문제언어결과실행 시간메모리
1121490vjudge1Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
449 ms20912 KiB
// Ali

// #pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define ins insert      
#define pii pair<int,int>
#define pb push_back
#define endl '\n'
#define putr(x) cout<<x<<endl;return; 
#define all(x) x.begin(),x.end()
const int mod = 1e9 +7, sze = 3e5+23, inf = 2e9, LG = 19,pr = 31;

void fast(){
    int n,k;
    cin>>n>>k;
    vector<int> arr(n);
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }
    int ans=0;
    vector<int> a,b;
    for(int i=0;i<n/2;i++){
        a.pb(arr[i]);
    }
    for(int j=n/2;j<n;j++){
        b.pb(arr[j]);
    }
    vector<int> al,bl;
    for(int mask =0;mask<(1<< (a.size() ));mask++){
        int sum=0;
        for(int i =0;i<30;i++){
            if(mask & (1<<i)){
                sum+=a[i];
            }
        }
        al.pb(sum);
    }
    for(int mask =0;mask<(1<< (b.size() ));mask++){
        int sum=0;
        for(int i =0;i<30;i++){
            if(mask & (1<<i)){
                sum+=b[i];
            }
        }
        bl.pb(sum);
    }
    // sort(all(al));
    sort(all(bl));
    for(auto v:al){
        int lazim = k - v;
        ans+= upper_bound(all(bl),lazim) - bl.begin();
    }
    putr(ans);
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
    int tt = 1;
    // cin>>tt;
 
    while(tt--){
        fast();
    }
    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...