제출 #617643

#제출 시각아이디문제언어결과실행 시간메모리
617643DanShaders비스킷 담기 (IOI20_biscuits)C++17
12 / 100
1091 ms340 KiB
//Dgrader.cpp
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;

#define x first
#define y second
using ll = long long;
using ld = long double;
#define all(x) begin(x), end(x)
#define sz(x) ((int) (x).size())

ll count_tastiness(ll x, vector<ll> k) {
	if (x == 1) {
		ll a = 1, b = 1, c = 0;
		for (ll q : k) {
			a += q;
			if (a % 2) {
				c += b;
			}
			a /= 2;
			b *= 2;
			if (a == 0) {
				a = 1;
				b = c;
				c = 0;
			}
		}
		return a * b + c;
	} else {
		ll total = 0;
		for (int i = 0; i < sz(k); ++i) {
			total += k[i] << i;
		}
		total /= x;

		ll ans = 0;
		auto ck = k;
		for (ll req = 0; req <= total; ++req) {
			ck = k;
			bool possible = true;
			for (int i = 0; i < x; ++i) {
				ll curr = req;
				for (int j = sz(ck); j--; ) {
					ll cnt = min(ck[j], curr >> j);
					curr -= cnt << j;
					ck[j] -= cnt;
				}
				if (curr) {
					possible = false;
					break;
				}
			}
			ans += possible;
		}
		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...