Submission #1035892

#TimeUsernameProblemLanguageResultExecution timeMemory
1035892Mr_HusanboyPacking Biscuits (IOI20_biscuits)C++17
21 / 100
1100 ms63352 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define all(a) (a).begin(), (a).end()
#define ff first
#define ss second
 
template<typename T>
int len(T &a){return a.size();}
 
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
 
vector<ll> cnt;
ll x;
 
map<pair<ll,ll>,ll> mp;
 
ll count(int i, ll j){
	if(i == 63){
		return 1;
	}
	if(mp.count({i, j})) return mp[{i, j}];

	
	ll res = 0;
	res += count(i + 1, (j + cnt[i]) / 2);
	if(j + cnt[i] >= x){
		res += count(i + 1, (j - x + cnt[i]) / 2);
	}
	return mp[{i, j}] = res;
}
 
long long count_tastiness(long long X, vector<long long> A) {
	cnt = A;
	mp.clear();
	x = X;
	while(len(cnt) < 63){
		cnt.push_back(0);
	}

	return count(0, 0);
}
#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...