제출 #1228786

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

#define ll unsigned long long

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	ll n, k, counts=0;
	cin>>n>>k;
	vector <ll> vect(n);
	vector <ll> one;
	vector <ll> two;
	for (int i=0; i<n; ++i){
		cin>>vect[i];
	}
	for (int i=1; i<(1<<n/2); ++i){
		ll sum = 0;
		for (int j=0; j<n/2; ++j){
			if (i&(1<<j)){
				sum+=vect[j];
			}
		}
		if (sum<=k){
			one.push_back(sum);
		}
	}
	for (int i=1; i<(1<<(n-n/2)); ++i){
		ll sum = 0;
		for (int j=0; j<(n-n/2); ++j){
			if (i&(1<<j)){
				sum+=vect[j+n/2];
			}
		}
		if (sum<=k){
			two.push_back(sum);
		}
	}
	sort(two.begin(), two.end());
	for (int i=0; i<one.size(); ++i){
		counts+=upper_bound(two.begin(), two.end(), k-one[i])-two.begin();
	}
	cout<<counts+1+one.size()+two.size();
}
#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...