Submission #638788

#TimeUsernameProblemLanguageResultExecution timeMemory
638788HossamHero7Ice Hockey World Championship (CEOI15_bobek)C++14
90 / 100
1085 ms60852 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' void solve(){ ll n,m; cin>>n>>m; vector<ll> v(n); for(auto &i:v) cin>>i; unordered_map<ll,int> frq; for(int mask=0;mask<(1<<n/2);mask++){ ll sum = 0; for(int i=0;i<(n>>1);i++){ if((1<<i)&mask){ sum += v[i]; } } frq[sum] ++; } int prev = 0; vector<ll> tmp; for(auto &i : frq){ tmp.push_back(i.first); } sort(tmp.begin(),tmp.end()); for(auto i : tmp){ frq[i] += prev; prev = frq[i]; } int rem = n-(n>>1); ll ans = 0; for(int mask=0;mask<(1<<rem);mask++){ ll sum = 0; for(int i=0;i<rem;i++){ if((1<<i)&mask){ sum += v[(n>>1)+i]; } } if(sum > m) continue; int upper = upper_bound(tmp.begin(),tmp.end(),m-sum) - tmp.begin(); upper --; ans += frq[tmp[upper]]; } cout<<ans<<endl; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 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...