Submission #928585

#TimeUsernameProblemLanguageResultExecution timeMemory
928585sleepntsheepIce Hockey World Championship (CEOI15_bobek)C++17
20 / 100
207 ms10716 KiB
#include <iostream> #include <fstream> #include <iomanip> #include <cmath> #include <cassert> #include <cstring> #include <vector> #include <algorithm> #include <deque> #include <set> #include <utility> #include <array> #include <complex> using u32 = unsigned; using i32 = int; using u64 = unsigned long long; using f64 = double; using f80 = long double; using namespace std; using pt = complex<f80>; #define ALL(x) begin(x), end(x) #define ShinLena cin.tie(nullptr)->sync_with_stdio(false); #define N 400005 int n; u64 z, a, b[44]; vector<u64> v; int main() { ShinLena; cin >> n >> a; for (int i = 0; i < n; ++i) cin >> b[i]; for (int i = 0; i < (1 << min(20, n)); ++i) { u64 z = 0; for (int j = 0; j < min(20, n); ++j) if ((i >> j) & 1) z += b[j]; if (z > a) continue; ++::z; v.emplace_back(z); } sort(ALL(v)); if (n >= 20) { for (int i = 0; i < (1 << (n - 20)); ++i) { u64 z = {}; for (int j = 20; j < n; ++j) if ((i >> j) & 1) z += b[j]; if (z > a) continue; ++::z; auto it = upper_bound(ALL(v), a - z); ::z += it - begin(v); } } cout << z; 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...