제출 #1339016

#제출 시각아이디문제언어결과실행 시간메모리
1339016viduxPacking Biscuits (IOI20_biscuits)C++17
0 / 100
1 ms344 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vl;
typedef vector<vl> vvl;

long long count_tastiness(long long x, vl a) {
	a.resize(64);
	for (int i = 0; i < 61; i++) {
		if (a[i] > x) {
			a[i+1] += (a[i]-x)/2;
			a[i] = a[i]-(a[i]-x)/2*2;
		}
	}
	//for (ll i : a) cout << i << " " ; cout << endl;
	vl ways(61);
	ways[0] = (a[0] >= x)+1;
	for (int i = 1; i < 61; i++) {
		ways[i] = ways[i-1];
		if (a[i] >= x) ways[i] *= 2;
		else {
			ll miss = (x-a[i])*2;
			for (int j = i-1; j >= 0; j--) {
				if (miss > 2*x || miss <= 0) break;

				if (a[j] < miss) miss = (miss-a[j])*2;
				else if (!j) ways[i] += (a[j]-miss >= x)+1;
				else ways[i] += ways[j-1], miss = 2*(miss+x-a[i]);
			}
		}
	}
	return ways[60];
}
#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...