제출 #1190486

#제출 시각아이디문제언어결과실행 시간메모리
1190486jayssIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
309 ms20896 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int A[41], limit, n;
vector<int> L, R;
void sol(int l, int r, int k, vector<int> &v) {
    if (k > limit) return;
    if (r == l) {
        v.push_back(k);
        return;
    }
    sol(l, r - 1, k, v);
    sol(l, r - 1, k + A[r], v);
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> limit;
    for (int i = 1;i <= n;i++) cin >> A[i];
    int m = (1 + n) / 2;
    sol(1 - 1, m, 0, L);
    sol(m + 1 - 1, n, 0, R);
    sort(R.begin(), R.end());
    int cnt = 0;
    for (int x : L) {
        auto it = upper_bound(R.begin(), R.end(), limit - x);
        int idx = it - R.begin();
        //cout << idx << ' ';
        cnt += idx;
    }
    cout << cnt;
    /* for (int x : L) cout << x << ' ';
    cout << '\n';
    for (int x : R) cout << x << ' '; */

    return 0;
}
/*
5 1000
100 1500 500 500 1000
*/
#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...