Submission #1193344

#TimeUsernameProblemLanguageResultExecution timeMemory
1193344lopkusIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
385 ms8828 KiB
#include <bits/stdc++.h> #define int int64_t void solve() { int n, m; std::cin >> n >> m; std::vector<int> a(n); for(int i = 0; i < n; i++) { std::cin >> a[i]; } std::vector<int> l, r; for(int i = 0; i < n / 2; i++) { l.push_back(i); } for(int i = n / 2; i < n; i++) { r.push_back(i); } int ans = 0; std::vector<int> left; for(int mask = 0; mask < (1LL << (int)l.size()); mask++) { int sum = 0; for(int i = 0; i < l.size(); i++) { if(mask & (1LL << i)) { sum += a[l[i]]; } } ans += (sum <= m); if(mask != 0) left.push_back(sum); } std::sort(left.begin(), left.end()); for(int mask = 1; mask < (1LL << (int)r.size()); mask++) { int sum = 0; for(int i = 0; i < r.size(); i++) { if(mask & (1LL << i)) { sum += a[r[i]]; } } ans += (sum <= m); int L = 0, R = left.size() - 1, p = - 1; while(L <= R) { int mid = (L + R) / 2; if(sum + left[mid] <= m) { L = mid + 1; p = mid; } else { R = mid - 1; } } ans += p + 1; } std::cout << ans; } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int t = 1; //std::cin >> t; while (t--) { solve(); } 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...