#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define upb(a, x) upper_bound(a.begin(), a.end(), x)
#define sz size
#define stvr(a) sort(a.begin(), a.end())
using namespace std;
vector<ll int> l, r, rr, l1, v;
ll int m;
ll int n;
bool lig(ll int a, ll int b){ return a&(1<<b); }
int main(){
ios::sync_with_stdio(0);
cin >> n >> m;
for(ll int i=0;i<n;i++){
int a;
cin >> a;
if(a<=m) v.pb(a);
}
for(ll int i=0;i<v.sz()/2;i++) l.pb(v[i]);
for(ll int i=v.sz()/2;i<v.sz();i++)r.pb(v[i]);
for(ll int mask=0;mask<(1<<l.sz());mask++){
ll int a=0;
for(ll int i=0;i<l.sz();i++){
if(lig(mask, i)) a+=l[i];
}
if(a<=m) l1.pb(a);
}for(ll int mask=0;mask<(1<<r.sz());mask++){
ll int a=0;
for(ll int i=0;i<r.sz();i++){
if(lig(mask, i)) a+=r[i];
}
if(a<=m) rr.pb(a);
}
stvr(rr);
ll int resp=0;
for(ll int i=0;i<l1.size();i++){
if(upb(rr, m-l1[i])==rr.end()){
resp+=rr.sz();
continue;
}
resp+=upb(rr, m-l1[i])-rr.begin();
}
cout << resp << '\n';
return 0;
}
Compilation message
bobek.cpp: In function 'int main()':
bobek.cpp:26:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
26 | for(ll int i=0;i<v.sz()/2;i++) l.pb(v[i]);
| ~^~~~~~~~~
bobek.cpp:27:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
27 | for(ll int i=v.sz()/2;i<v.sz();i++)r.pb(v[i]);
| ~^~~~~~~
bobek.cpp:31:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
31 | for(ll int i=0;i<l.sz();i++){
| ~^~~~~~~
bobek.cpp:37:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
37 | for(ll int i=0;i<r.sz();i++){
| ~^~~~~~~
bobek.cpp:46:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
46 | for(ll int i=0;i<l1.size();i++){
| ~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
208 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
204 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
40 ms |
1936 KB |
Output is correct |
2 |
Correct |
138 ms |
5440 KB |
Output is correct |
3 |
Correct |
743 ms |
20824 KB |
Output is correct |
4 |
Correct |
137 ms |
5372 KB |
Output is correct |
5 |
Correct |
18 ms |
1552 KB |
Output is correct |
6 |
Correct |
8 ms |
976 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
63 ms |
2888 KB |
Output is correct |
2 |
Correct |
44 ms |
1992 KB |
Output is correct |
3 |
Correct |
266 ms |
10564 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
8 ms |
976 KB |
Output is correct |
6 |
Correct |
19 ms |
1612 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
79 ms |
3476 KB |
Output is correct |
2 |
Correct |
184 ms |
6592 KB |
Output is correct |
3 |
Correct |
206 ms |
6584 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
103 ms |
6596 KB |
Output is correct |
6 |
Correct |
261 ms |
20828 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
163 ms |
12748 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
19 ms |
1960 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
217 ms |
20812 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |