#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;
set<pii> S;
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 << "1\n";
} else {
cout << "0\n";
}
}
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;
for(pii x:M2) {
s += x.nd;
S.insert({x.st, s});
}
int ans = 0;
for(pii x:M) {
if(x.st>Sum) continue;
int val = Sum-x.st;
auto it = S.upper_bound({val, 1e18});
if(it==S.begin()) continue;
it--;
ans += x.nd*(*it).nd;
}
cout << ans << "\n";
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
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 |
0 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 |
0 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 |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
468 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 |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 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 |
35 ms |
2496 KB |
Output is correct |
2 |
Correct |
319 ms |
33148 KB |
Output is correct |
3 |
Execution timed out |
1081 ms |
55776 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
53 ms |
4428 KB |
Output is correct |
2 |
Correct |
85 ms |
12736 KB |
Output is correct |
3 |
Correct |
171 ms |
2064 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
6 ms |
212 KB |
Output is correct |
6 |
Correct |
40 ms |
5012 KB |
Output is correct |
7 |
Correct |
82 ms |
12504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
219 ms |
29224 KB |
Output is correct |
2 |
Correct |
364 ms |
28876 KB |
Output is correct |
3 |
Correct |
304 ms |
27472 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
63 ms |
324 KB |
Output is correct |
6 |
Correct |
366 ms |
3916 KB |
Output is correct |
7 |
Correct |
729 ms |
82408 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1062 ms |
106296 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
132 ms |
20812 KB |
Output is correct |
2 |
Correct |
452 ms |
49516 KB |
Output is correct |
3 |
Correct |
32 ms |
6356 KB |
Output is correct |
4 |
Correct |
30 ms |
6368 KB |
Output is correct |
5 |
Correct |
70 ms |
312 KB |
Output is correct |
6 |
Correct |
140 ms |
20772 KB |
Output is correct |
7 |
Execution timed out |
1085 ms |
107732 KB |
Time limit exceeded |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1043 ms |
101060 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |