제출 #1174055

#제출 시각아이디문제언어결과실행 시간메모리
1174055Dan4LifeIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
175 ms20892 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
using ll = long long;
int n;
ll m, ans, tot, a[50];
 
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0);
	cin >> n >> m; vector<ll> v, w;
	for(int i = 0; i < n; i++) cin >> a[i];
	sort(a,a+n); int xd = n/2;
	for(ll mask = 0; mask < (1ll<<(n-xd)); mask++){
		ll cost = 0;
		for(int i = 0; i < n-xd; i++)
			cost+=(mask>>i&1)*a[xd+i];
		if(cost<=m) w.pb(cost);
	}
	for(ll mask = 0; mask < (1ll<<xd); mask++){
		ll cost = 0;
		for(int i = 0; i < xd; i++)
			cost+=(mask>>i&1)*a[i];
		if(cost<=m) v.pb(-cost);
	}
	sort(all(v)); sort(all(w)); int j = 0;
	for(int i = 0; i < sz(v); i++){
		while(j<sz(w) and w[j]<=m+v[i]) j++;
		ans+=j;
	}
	cout << ans << "\n";
}
#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...