제출 #781208

#제출 시각아이디문제언어결과실행 시간메모리
781208NK_Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
166 ms16724 KiB
// Success consists of going from failure to failure without loss of enthusiasm #include <bits/stdc++.h> using namespace std; #define nl '\n' #define sz(x) int(x.size()) using ll = long long; template<class T> using V = vector<T>; int main() { cin.tie(0)->sync_with_stdio(0); int N; ll M; cin >> N >> M; int a = N / 2, b = N - a; V<ll> A(a), B(b); for(auto& x : A) cin >> x; for(auto& x : B) cin >> x; V<ll> SA, SB; auto get = [&](const V<ll>& X) { int n = sz(X); V<ll> S(1 << n, 0); for(int i = 1; i < (1<<n); i++) { int low = i & -i; S[i] = S[i ^ low] + X[__lg(low)]; if (S[i ^ low] == -1 || S[i] > M) S[i] = -1; } sort(rbegin(S), rend(S)); while(S.back() == -1) S.pop_back(); // for(auto x : S) cout << x << " "; // cout << endl; return S; }; SA = get(A); SB = get(B); ll ans = 0; int r = sz(SB) - 1; for(auto x : SA) { ll left = M - x; while(r >= 0 && SB[r] <= left) { // cout << SB[r] << endl; r--; } // cout << left << " " << r << endl; ans += sz(SB) - 1 - r; } cout << ans << nl; 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...