Submission #118419

#TimeUsernameProblemLanguageResultExecution timeMemory
118419minhtung0404Ice Hockey World Championship (CEOI15_bobek)C++17
100 / 100
213 ms20972 KiB
//https://oj.uz/problem/view/CEOI15_bobek

#include<bits/stdc++.h>
using namespace std;

vector <long long> mv[2];
int n;
long long m, ans, a[50];

void backtrack(vector <long long> & mv, int i, int n, long long sum){
    if (i == n+1){
        mv.push_back(sum);
        return;
    }
    backtrack(mv, i+1, n, sum);
    backtrack(mv, i+1, n, sum+a[i]);
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    backtrack(mv[0], 1, n/2, 0);
    backtrack(mv[1], n/2+1, n, 0);
    sort(mv[0].begin(), mv[0].end());
    sort(mv[1].begin(), mv[1].end());
    int cnt = mv[1].size()-1;
    for (auto x : mv[0]){
        while (cnt >= 0 && mv[1][cnt] + x > m) cnt--;
        ans += cnt+1;
    }
    cout << ans;
}
#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...