제출 #303613

#제출 시각아이디문제언어결과실행 시간메모리
303613gs14004Packing Biscuits (IOI20_biscuits)C++17
42 / 100
1050 ms17092 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
using namespace std;
using lint = long long;
using pi = pair<lint, lint>;

long long count_tastiness(long long x, std::vector<long long> a){
	vector<pi> cur;
	cur = {pi(0, 1)};
	for(auto &i : a){
		vector<pi> v1, v2;
		for(auto &[j, k] : cur){
			v1.emplace_back((j + i) / 2, k);
			if(j + i >= x) v2.emplace_back((j + i - x) / 2, k);
		}
		vector<pi> v3(sz(v1) + sz(v2));
		merge(all(v1), all(v2), v3.begin());
		cur.clear();
		for(auto &[x, y] : v3){
			if(sz(cur) && cur.back().first == x) cur.back().second += y;
			else cur.emplace_back(x, y);
		}
	}
	lint ret = 0;
	for(auto &[i, j] : cur) ret += (i/x+1) * j;
	return ret;
}

#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...