제출 #1249972

#제출 시각아이디문제언어결과실행 시간메모리
1249972ZicrusSouvenirs (IOI25_souvenirs)C++20
4 / 100
0 ms416 KiB
#include <bits/stdc++.h>
#include "souvenirs.h"
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
#define all(v) v.begin(), v.end()
constexpr ll inf = 1ll << 62ll;
mt19937 mt(time(0));
ll _ = 0;

void buy_souvenirs(int N, ll P0) {
	ll n = N;
	vector<ll> prices(n);
	prices[0] = P0;
	vector<ll> cnt(n);
	auto ask = [&](ll guess) -> pair<vector<int>, ll> {
		auto [vec, rem] = transaction(guess);
		for (auto &e : vec) cnt[e]++;
		return {vec, rem};
	};

	ll guess = P0-1;
	while (!prices[n-1]) {
		auto [vec, rem] = ask(guess);
		ll paid = guess - rem;
		if (vec.size() == 1) {
			prices[vec[0]] = paid;
			guess = paid-1;
			continue;
		}
		guess = paid / vec.size();
	}
	return;

	for (ll i = n-2; i >= 1; i--) {
		if (prices[i]) continue;
		ll guess = 2*prices[i+1];
		auto [vec, rem] = ask(guess);
		prices[i] = guess - rem;
	}

	for (ll i = 1; i < n; i++) {
		while (cnt[i] < i) ask(prices[i]);
	}
}

#ifdef TEST
#include "grader.cpp"
#endif
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...