제출 #1357939

#제출 시각아이디문제언어결과실행 시간메모리
1357939vjudge1Ice Hockey World Championship (CEOI15_bobek)C++20
100 / 100
435 ms20964 KiB
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
using namespace std;
#define intt int 
#define int long long int
//#define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
#define io cin.tie(nullptr); cout.tie(nullptr); ios_base::sync_with_stdio(false); 
#define all(v) v.begin(), v.end() 
#define endl '\n' 
#define ff first 
#define ss second
#define i128 __int128_t 
#define ld long double
#define pb push_back
//#define printv(v,a,b) cerr<<#v<<' ';for(int i=a;i<b;++i){cerr<<v[i]<<' ';} cerr<<endl;
#define debug(v) cout<<#v<<' ';for(int i=0;i<v.size();++i){cout<<v[i]<<' ';} cout<<endl;
#define rsz resize
#define skip continue
#define unmap unordered_map


typedef pair<int,int> pii; 
typedef vector<int> vi;
typedef vector<bool> vb;

const int MAX=2e5+5;
const int mod=1e9+7;
const long long INF=1e18+7;


void init();
void solve(){
    int n,m;
    cin>>n>>m;
    vi v(n);
    for(int i=0;i<n;++i){
        cin>>v[i];
    }
    int n1=(n+1)/2,n2=n/2;
    vi left,right;
    for(int mask=0;mask<(1<<n1);++mask){
        int sum=0;
        for(int i=0;i<n1;++i){
            if(mask&(1<<i)){
                sum+=v[i];
            }
        }
        left.pb(sum);
    }
    for(int mask=0;mask<(1<<n2);++mask){
        int sum=0;
        for(int i=0;i<n2;++i){
            if(mask&(1<<i)){
                sum+=v[i+n1];
            }
        }
        right.pb(sum);
    }
    sort(all(right));
    int ans=0;
    for(int i=0;i<left.size();++i){
        int temp=m-left[i];
        auto it=upper_bound(all(right),temp);
        ans+=(it-right.begin());
    }
    cout<<ans<<endl;
    
}
signed main(){
    io;
    int t=1,n;
    init();
    // cin>>t;
    #ifdef LOCAL
    freopen("output.txt","w",stdout);
    #endif
    while(t--){
        solve();
    }
}
void init(){
    
}
#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...