Submission #1065880

#TimeUsernameProblemLanguageResultExecution timeMemory
1065880vjudge1Packing Biscuits (IOI20_biscuits)C++17
9 / 100
1070 ms596 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using vll = vector<ll>;
using i128 = __int128;

ll count_tastiness(ll x, vll a) {
    int n = int(a.size());
    int MN = 122;
    vector<i128> S(MN, 0);
    for(int i = 0; i < MN; ++i) {
        if(i < n) S[i] = i128(1ll << i) * a[i];
        else S[i] = 0;
        if(i) S[i] += S[i - 1];
    }
    vll C(MN, 0);
    for(int i = 0; i < MN; ++i) {
        S[i] /= x;
        if(i < 61 && S[i] >= i128(1ll << (i + 1)) - 1) C[i] = (1ll << (i + 1)) - 1;
        else C[i] = ll(S[i]);
    }
    int re = 0;
    const ll MV = 120003;
    for(int i = 0; i < MV; ++i) {
        ll v = 0;
        int ok = 1;
        for(int j = 0; j < MN; ++j) {
            if(j < 61 && (i & (1ll << j))) v |= (1ll << j);
            if(i128(v) > S[j]) {
                ok = 0;
                break;
            }
        }
        re += ok;
    }
	return re;
}

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