Submission #1292858

#TimeUsernameProblemLanguageResultExecution timeMemory
1292858enzyPacking Biscuits (IOI20_biscuits)C++20
9 / 100
1142 ms1215136 KiB
#include "biscuits.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxk=62;
vector<pair<ll,ll>>dp[maxk];
ll count_tastiness(ll x, vector<ll> v){
	for(int i=0;i<maxk;i++) dp[i].clear();
	reverse(v.begin(),v.end());
	v.push_back(0);
	reverse(v.begin(),v.end());
	while(v.size()<=61) v.push_back(0);
	ll resp=1;
	dp[0].push_back({1,0});
	for(int i=1;i<=60;i++){
		// calcular a resp agr pro bit i-1
		//cout << "? " << v[i] << endl;
		for(int j=i-1;j>=0;j--){
			for(pair<ll,ll>p : dp[j]){
				ll sum=p.second; // qnt terei de i para pagar
				for(int l=j+1;l<=i;l++){
					sum/=2;
					sum+=v[l];
				}
				if(sum>=x){
					//cout << i << " " << j << " " << sum << endl;
					dp[i].push_back({p.first,(sum-x)});
					resp+=p.first;
				}
			}
		}
		//cout << "! " << i << " " << resp << endl;
		//for(pair<ll,ll> p : dp[i]) cout << p.first << " " << p.second << endl;
		//cout << endl;
	}
	return resp;
}
#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...