Submission #1168566

#TimeUsernameProblemLanguageResultExecution timeMemory
1168566InvMODIce Hockey World Championship (CEOI15_bobek)C++20
100 / 100
418 ms16972 KiB
#include<bits/stdc++.h>

using namespace std;

using ll = long long;

#define sz(v) (int)(v).size()
#define all(v) (v).begin(), (v).end()



void solve()
{
    int n; ll Mx; cin >> n >> Mx;

    int m = n / 2;

    vector<ll> a, b;
    for(int i = 0; i <= m; i++){
        ll x; cin >> x;
        a.push_back(x);
    }

    for(int i = m + 1; i < n; i++){
        ll x; cin >> x;
        b.push_back(x);
    }

    vector<ll> item;
    for(int msk = 1; msk < (1 << sz(a)); msk++){
        ll cur_item = 0;
        for(int i = 0; i < sz(a); i++){
            if(msk >> i & 1){
                cur_item += a[i];
            }
        }

        if(cur_item <= Mx){
            item.push_back(cur_item);
        }
    }
    sort(all(item));

    ll answer = 0;
    for(int msk = 0; msk < (1 << sz(b)); msk++){
        ll cur_item = 0;
        for(int i = 0; i < sz(b); i++){
            if(msk >> i & 1){
                cur_item += b[i];
            }
        }

        if(cur_item <= Mx){
            int p = upper_bound(all(item), Mx - cur_item) - item.begin();

            answer = answer + (1ll * p + 1);
        }
    }

    cout << answer << "\n";
}

int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    #define name "InvMOD"
    if(fopen(name".INP", "r")){
        freopen(name".INP", "r", stdin);
        freopen(name".OUT", "w", stdout);
    }

    solve();
    return 0;
}

Compilation message (stderr)

bobek.cpp: In function 'int32_t main()':
bobek.cpp:69:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   69 |         freopen(name".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bobek.cpp:70:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |         freopen(name".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...