#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++){
resp+=(ll int)(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 |
204 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 |
208 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 |
38 ms |
1912 KB |
Output is correct |
2 |
Correct |
107 ms |
5320 KB |
Output is correct |
3 |
Correct |
546 ms |
20768 KB |
Output is correct |
4 |
Correct |
104 ms |
5436 KB |
Output is correct |
5 |
Correct |
15 ms |
1484 KB |
Output is correct |
6 |
Correct |
10 ms |
976 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
2752 KB |
Output is correct |
2 |
Correct |
33 ms |
2000 KB |
Output is correct |
3 |
Correct |
206 ms |
10456 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
8 ms |
976 KB |
Output is correct |
6 |
Correct |
16 ms |
1612 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
79 ms |
3532 KB |
Output is correct |
2 |
Correct |
147 ms |
6584 KB |
Output is correct |
3 |
Correct |
158 ms |
6592 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
100 ms |
6520 KB |
Output is correct |
6 |
Correct |
259 ms |
20760 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
160 ms |
12744 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
19 ms |
2000 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
239 ms |
20732 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |