제출 #1335829

#제출 시각아이디문제언어결과실행 시간메모리
1335829nguyenkhangninh99Ice Hockey World Championship (CEOI15_bobek)C++20
100 / 100
206 ms20972 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int a[69], n, S;
vector<int> l, r;

void left(int i, int sum){
    if(i == n / 2) l.push_back(sum);
    else{
        left(i + 1, sum + a[i]);
        left(i + 1, sum);
    }
}

void right(int i, int sum){
    if(i == n) r.push_back(sum);
    else{
        right(i + 1, sum + a[i]);
        right(i + 1, sum);
    }
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> n >> S;
    for(int i = 0; i < n; i++) cin >> a[i];

    left(0, 0);
    right(n / 2, 0);

    sort(l.begin(), l.end());
    sort(r.begin(), r.end());

    int res = 0;
    for(int x: l){
        if(x > S) break;
        res += upper_bound(r.begin(), r.end(), S - x) - r.begin();
    }
    cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...