Submission #306796

#TimeUsernameProblemLanguageResultExecution timeMemory
306796VEGAnnPacking Biscuits (IOI20_biscuits)C++14
0 / 100
2 ms640 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
#define sz(x) ((int)x.size())
using namespace std;
typedef long long ll;
vector<ll> b;
unordered_set<ll> vls;

void rec(int ps, ll vl){
    if (ps == sz(b)){
        vls.insert(vl);
        return;
    }

    rec(ps + 1, vl);
    if (b[ps] > 0) rec(ps + 1, vl + (1ll << ps));
    if (b[ps] > 1) rec(ps + 1, vl + (1ll << (ps + 1)));
}

long long count_tastiness(long long x, std::vector<long long> a) {
    ll ans = 1;

    assert(x == 1);

    int k = sz(a);

    for (int sml = 0; sml < k; sml++) {
        b = a;

        vls.clear();

        if (a[sml] > 0) {
            for (int cur = sml; cur < k; cur++){
                if (b[cur] == 0) continue;

                if (cur + 1 < k)
                    b[cur + 1] += max(0ll, b[cur] - 2) / 2;
            }

            rec(sml, 0);

            ans += sz(b);
        }

        if (sml + 1 < k)
            a[sml + 1] += a[sml] / 2;
    }

	return 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...