Submission #1222114

#TimeUsernameProblemLanguageResultExecution timeMemory
1222114justPacking Biscuits (IOI20_biscuits)C++20
9 / 100
1095 ms6040 KiB
#include "biscuits.h"

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

#define vec vector
#define int long long

const int BITS = 18;

int count_tastiness(int x, vec<int> a) {
    int k = a.size();
    
    int sum = 0;
    for (int i = 0; i < k; i++) {
        sum += (1 << i) * a[i];
    }
    
    while (a.size() < BITS) a.push_back(0);
    
    vec<int> cur(BITS, 0);
    
    int ans = 1;
    for (int i = 1; i <= sum / x; i++) {
        for (int j = 0; j < BITS; j++) cur[j] = a[j];
        
        for (int j = 0; j < BITS - 1; j++) {
            if (i & (1 << j)) {
                if (cur[j] >= x) {
                    cur[j] -= x;
                    cur[j + 1] += cur[j] / 2;
                } else {
                    goto done;
                }
            } else {
                cur[j + 1] += cur[j] / 2;
            }
        }
        
        ans++;
        cerr << i << endl;
        
        done:;
    }
    
    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...