Submission #1229560

#TimeUsernameProblemLanguageResultExecution timeMemory
1229560kaiboyIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
273 ms16828 KiB
#include <algorithm> #include <iostream> using namespace std; const int N = 40; const int M = 20; long long aa[N], ss[1 << M], tt[1 << M]; int main() { int n; long long s_; cin >> n >> s_; for (int i = 0; i < n; i++) cin >> aa[i]; int m = n / 2; for (int b = 0; b < 1 << m; b++) for (int i = 0; i < m; i++) if (b >> i & 1 && (ss[b] += aa[i]) > s_) break; for (int b = 0; b < 1 << n - m; b++) for (int i = m; i < n; i++) if (b >> i - m & 1 && (tt[b] += aa[i]) > s_) break; sort(ss, ss + (1 << m)); sort(tt, tt + (1 << n - m)); long long ans = 0; for (int l = 0, r = (1 << n - m) - 1; l < 1 << m; l++) { while (r >= 0 && ss[l] + tt[r] > s_) r--; ans += r + 1; } cout << ans << '\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...