Submission #899499

#TimeUsernameProblemLanguageResultExecution timeMemory
899499MongHwaIce Hockey World Championship (CEOI15_bobek)C++17
100 / 100
214 ms22732 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; #define ll long long ll val; vector<ll> v1, v2; vector<ll> target1, target2; void go(int k, vector<ll>& v, vector<ll>& t, int d) { if(k == d) { if(val > 0) t.push_back(val); return; } val += v[k]; go(k+1, v, t, d); val -= v[k]; go(k+1, v, t, d); } int main() { ios::sync_with_stdio(0); cin.tie(0); int n; ll m; cin >> n >> m; for(int i = 0; i < n; i++) { ll x; cin >> x; if(i < n/2) v1.push_back(x); else v2.push_back(x); } int d1 = v1.size(), d2 = v2.size(); go(0, v1, target1, d1); go(0, v2, target2, d2); sort(target1.begin(), target1.end()); sort(target2.begin(), target2.end()); ll ans = 0; ans += (upper_bound(target1.begin(), target1.end(), m) - target1.begin()); ans += (upper_bound(target2.begin(), target2.end(), m) - target2.begin()); for(int i = 0; i < (int)target1.size(); i++) ans += (upper_bound(target2.begin(), target2.end(), m-target1[i]) - target2.begin()); ans++; cout << ans << '\n'; }
#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...