#include<bits/stdc++.h>
using namespace std;
#define int int64_t
#define pb push_back
#define pii pair<int, int>
#define st first
#define nd second
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
map<int, int> M;
map<int, int> M2;
int tab[49];
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, Sum;
cin >> n >> Sum;
for(int i=0;i<n;i++) {
cin >> tab[i];
}
int m = n/2;
if(n==1) {
if(tab[0]<=Sum) {
cout << "2\n";
} else {
cout << "1\n";
}
return 0;
}
int m2 = n-m;
for(int i=0;i<(1<<m);i++) {
int s = 0;
for(int j=0;j<m;j++) {
if(i&(1<<j)) {
s+=tab[j];
}
}
M[-s]++;
}
for(int i=0;i<(1<<m2);i++) {
int s = 0;
for(int j=m;j<n;j++) {
if(i&(1<<(j-m))) {
s+=tab[j];
}
}
M2[s]++;
}
int s = 0;
auto it = M2.begin();
int ans = 0;
for(pii x:M) {
x.st = -x.st;
int val = Sum-x.st;
while(it!=M2.end()&&(*it).st<=val) {
s += (*it).nd;
it++;
}
ans += x.nd*s;
}
cout << ans << "\n";
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
36 ms |
1720 KB |
Output is correct |
2 |
Correct |
233 ms |
21944 KB |
Output is correct |
3 |
Execution timed out |
1072 ms |
55524 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
63 ms |
2920 KB |
Output is correct |
2 |
Correct |
83 ms |
8132 KB |
Output is correct |
3 |
Correct |
139 ms |
1476 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
5 ms |
212 KB |
Output is correct |
6 |
Correct |
29 ms |
3448 KB |
Output is correct |
7 |
Correct |
48 ms |
8380 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
149 ms |
18048 KB |
Output is correct |
2 |
Correct |
316 ms |
18452 KB |
Output is correct |
3 |
Correct |
258 ms |
17896 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
62 ms |
304 KB |
Output is correct |
6 |
Correct |
328 ms |
2592 KB |
Output is correct |
7 |
Correct |
489 ms |
49536 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1066 ms |
98792 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
87 ms |
12520 KB |
Output is correct |
2 |
Correct |
300 ms |
33028 KB |
Output is correct |
3 |
Correct |
19 ms |
4308 KB |
Output is correct |
4 |
Correct |
21 ms |
4372 KB |
Output is correct |
5 |
Correct |
66 ms |
212 KB |
Output is correct |
6 |
Correct |
88 ms |
12596 KB |
Output is correct |
7 |
Execution timed out |
1102 ms |
114208 KB |
Time limit exceeded |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1074 ms |
104844 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |