Submission #1212567

#TimeUsernameProblemLanguageResultExecution timeMemory
1212567hengliaoPacking Biscuits (IOI20_biscuits)C++20
9 / 100
1140 ms1256784 KiB
#pragma GCC optimize("O4,Ofast")
#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define vll vector<ll>
#define pll pair<ll, ll>
#define pb push_back

typedef long long ll;
typedef __int128 i128;

namespace{
    ll k;
	const ll mxN=63;
	const ll inf=2e18;
    const ll LOG=63;
	ll a[LOG];
    vll v[LOG+1];
}

long long count_tastiness(long long x, vector<long long> A) {
	k=A.size();
	for(ll i=0;i<LOG;i++){
		v[i].clear();
	}
    memset(a, 0, sizeof(a));
    for(ll i=0;i<k;i++){
        a[i]=A[i];
    }
    ll ans=1;
    v[0].pb(0);
    ll sum=0;
    ll lg=63-__builtin_clzll(inf/x);
	for(ll i=0;i<=lg;i++){
        sum+=a[i]*(1LL<<i);
        for(auto &it:v[i]){
            if((it+(1LL<<i)*a[i])>=(x*(1LL<<i))){
                v[i+1].pb(it+(1LL<<i)*a[i]-x*(1LL<<i));
                // cout<<(sum-(it+(1LL<<i)*a[i]-x*(1LL<<i)))/x<<'\n';
                ans++;
            }
            v[i+1].pb(it+(1LL<<i)*a[i]);
        }
    }

    // cout<<"_______\n";

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