Submission #1219375

#TimeUsernameProblemLanguageResultExecution timeMemory
1219375lizi14Ice Hockey World Championship (CEOI15_bobek)C++20
100 / 100
186 ms20892 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<int>v,b; int x[50]; int m; void rec(int x[], int n, int i, int sum){ if(i==n){ if(sum<=m)v.push_back(sum); return; } rec(x,n,i+1,sum+x[i]); rec(x,n,i+1,sum); } void re(int x[], int n, int i, int sum){ if(i==n){ if(sum<=m)b.push_back(sum); return; } re(x,n,i+1,sum+x[i]); re(x,n,i+1,sum); } signed main(){ int n; cin>>n>>m; for(int i=0; i<n; i++){ cin>>x[i]; } rec(x,n/2,0,0); re(x,n,n/2,0); sort(v.begin(),v.end()); sort(b.begin(),b.end()); long long bati=0; for(int i=0; i<v.size(); i++){ int ans; if(i>0){ if(v[i]+b[ans]<=m){ bati+=ans+1; continue; } } ans=0; int l=0,r=b.size()-1; while(l<=r){ int mid=(l+r)/2; if(b[mid]+v[i]<=m){ l=mid+1; ans=mid; } else{ r=mid-1; } } bati+=ans+1; } cout<<bati<<endl; }
#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...