| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1267964 | zwezdinv | 선물 (IOI25_souvenirs) | C++20 | 12 ms | 408 KiB |
#include<bits/stdc++.h>
#include "souvenirs.h"
void buy_souvenirs(int n, long long p0) {
std::vector<long long> p(n);
p[0] = p0;
std::vector<int> cnt(n);
auto go = [&](auto self, long long s) -> void {
auto [occ, rem] = transaction(s);
for (auto x : occ) cnt[x]++;
s -= rem;
if (occ.size() == 1) {
p[occ[0]] = s;
} else {
long long q = s / occ.size();
self(self, q);
for (int i = 0; i < n; ++i) {
if (q >= p[i]) {
q -= p[i];
s -= p[i];
}
}
self(self, s);
}
};
for (int i = 0; i < n; ++i) {
if (!p[i]) {
go(go, p[i - 1] - 1);
}
while (cnt[i] < i) {
cnt[i]++;
transaction(p[i]);
}
}
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
