Submission #1328467

#TimeUsernameProblemLanguageResultExecution timeMemory
1328467enzyPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1132 ms1051112 KiB
#include "biscuits.h"
#include<bits/stdc++.h>
#define ll long long
#define sz(v) (ll)(v.size())
const int maxk=62;
const int inf=2e18;
ll sp[maxk];
using namespace std;
long long count_tastiness(long long x, vector<long long> a){
	while(a.size()<maxk-1) a.push_back(0ll);
	sp[0]=0;
	for(ll i=0;i<a.size();i++){
		if(i) sp[i]=sp[i-1];
		if(sp[i]==inf||a[i]==0) continue;
		ll aux=(inf+a[i]-1)/a[i];
		if((1ll<<i)>aux) sp[i]=inf;
		else sp[i]+=a[i]*(1ll<<i);
	}
	vector<ll>resp; resp.push_back(0ll);
	for(ll k=0;k<maxk;k++){
		int t=resp.size();
		for(int i=0;i<t;i++){
			if((resp[i]+(1ll<<k))*x>sp[k]) break;
			resp.push_back(resp[i]+(1ll<<k));
		}
	}
	ll ans=sz(resp);
	return ans;
}

Compilation message (stderr)

biscuits.cpp:6:15: warning: overflow in conversion from 'double' to 'int' changes value from '2.0e+18' to '2147483647' [-Woverflow]
    6 | const int inf=2e18;
      |               ^~~~
#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...