Submission #1249972

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