#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//retorna qtd de y, t.q. podemos ter x pacotes somado y cada
ll count_tastiness(ll x, vector<ll> a) {
ll MAXA = 0;
for(int k = a.size()-1; k >= 0; k--){
MAXA += a[k]*(1<<k);
}
if(x > MAXA) return 1ll;
ll ans = 1;
for(int y = 1; y <= MAXA/x; y++){
vector<ll> a_copy = a;
priority_queue<int> pq; //tera x sacola de valor y
for(int i = 1; i <= x; i++) pq.push(y);
//cerr << "ysiz: " << pq.size() << endl;
//retira sempre do maior bag pra encher
for(int k = a_copy.size()-1; k >= 0; k--){
if(a_copy[k] == 0) continue;
if(pq.empty()) break;
int no = pq.top();
pq.pop();
//cerr << "k: " << k << endl;
if((1<<k) <= no){
a_copy[k] --;
//cerr << "usei " << (1<<k) << " para preencher " << no << endl;
no -= (1<<k);
}
else{
pq.push(no);
continue;
}
if(no>0) pq.push(no);
if(a_copy[k] != 0) k++;
}
if(pq.empty()){
ans++;
}
}
return ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |