Submission #1121743

#TimeUsernameProblemLanguageResultExecution timeMemory
1121743vjudge1Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
447 ms22952 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; // sinagdir hell sayilmir kocurmedir void computeSubsetSums(const vector<ll>& arr, vector<ll>& subsetSums) { int n = arr.size(); for (int mask = 0; mask < (1 << n); ++mask) { ll sum = 0; for (int i = 0; i < n; ++i) { if (mask & (1 << i)) { sum += arr[i]; } } subsetSums.push_back(sum); } } int main() { int N; ll M; cin >> N >> M; vector<ll> costs(N); for (int i = 0; i < N; ++i) { cin >> costs[i]; } vector<ll> firstHalf(costs.begin(), costs.begin() + N / 2); vector<ll> secondHalf(costs.begin() + N / 2, costs.end()); vector<ll> subsetSums1, subsetSums2; computeSubsetSums(firstHalf, subsetSums1); computeSubsetSums(secondHalf, subsetSums2); sort(subsetSums2.begin(), subsetSums2.end()); ll totalWays = 0; for (ll sum1 : subsetSums1) { ll remaining = M - sum1; totalWays += upper_bound(subsetSums2.begin(), subsetSums2.end(), remaining) - subsetSums2.begin(); } cout << totalWays << endl; 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...