#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 << "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;
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 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 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 |
1 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 |
1 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 |
37 ms |
2480 KB |
Output is correct |
2 |
Correct |
308 ms |
33128 KB |
Output is correct |
3 |
Execution timed out |
1079 ms |
62884 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
55 ms |
4428 KB |
Output is correct |
2 |
Correct |
91 ms |
12644 KB |
Output is correct |
3 |
Correct |
149 ms |
2068 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
5 ms |
212 KB |
Output is correct |
6 |
Correct |
36 ms |
5044 KB |
Output is correct |
7 |
Correct |
73 ms |
12504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
207 ms |
29260 KB |
Output is correct |
2 |
Correct |
363 ms |
28888 KB |
Output is correct |
3 |
Correct |
313 ms |
27324 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
58 ms |
212 KB |
Output is correct |
6 |
Correct |
332 ms |
3828 KB |
Output is correct |
7 |
Correct |
710 ms |
82368 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1054 ms |
122044 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
140 ms |
20876 KB |
Output is correct |
2 |
Correct |
429 ms |
49540 KB |
Output is correct |
3 |
Correct |
31 ms |
6440 KB |
Output is correct |
4 |
Correct |
33 ms |
6468 KB |
Output is correct |
5 |
Correct |
71 ms |
320 KB |
Output is correct |
6 |
Correct |
150 ms |
20820 KB |
Output is correct |
7 |
Execution timed out |
1075 ms |
111668 KB |
Time limit exceeded |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1079 ms |
108192 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |