제출 #1184948

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

int n; ll m;
ll c[45];
bool mode = 0;

vector<ll> v1, v2;

void rec(int l, int r, ll sum = 0) {
    if(l > r) {
        if(mode) v2.push_back(sum);
        else v1.push_back(sum);
        return ;
    }
    rec(l+1, r, sum);
    rec(l+1, r, sum + c[l]);
}

int main() {
    cin.tie(0) -> sync_with_stdio(0);
    cin >> n >> m;
    for(int i=1;i<=n;i++) cin >> c[i];
    rec(1, min(n, 20)); mode = 1;
    if(n > 20) rec(21, n);
    else v2.push_back(0);
    sort(v2.begin(), v2.end());
    ll sum = 0;
    for(auto &e:v1) {
        sum += (upper_bound(v2.begin(), v2.end(), m-e) - v2.begin());
    }
    cout << sum;
}
#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...