제출 #1218716

#제출 시각아이디문제언어결과실행 시간메모리
1218716mariamp1Ice Hockey World Championship (CEOI15_bobek)C++20
100 / 100
391 ms8520 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N; ll M; cin >> N >> M; vector<ll> cost(N); for(int i = 0; i < N; i++) cin >> cost[i]; int N1 = N / 2; int N2 = N - N1; vector<ll> leftSums; leftSums.reserve(1 << N1); for(int mask = 0; mask < (1 << N1); mask++){ ll sum = 0; for(int i = 0; i < N1; i++) if(mask & (1 << i)) sum += cost[i]; leftSums.push_back(sum); } sort(leftSums.begin(), leftSums.end()); ll answer = 0; for(int mask = 0; mask < (1 << N2); mask++){ ll sum2 = 0; for(int i = 0; i < N2; i++) if(mask & (1 << i)) sum2 += cost[N1 + i]; ll remain = M - sum2; if(remain < 0) continue; int cnt = upper_bound(leftSums.begin(), leftSums.end(), remain) - leftSums.begin(); answer += cnt; } cout << answer << "\n"; 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...