| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1340304 | biblicaleagle | Souvenirs (IOI25_souvenirs) | C++20 | 0 ms | 400 KiB |
#include "souvenirs.h"
#include <utility>
#include <vector>
const int NMAX = 100;
bool isPriced[NMAX] = {false};
int count[NMAX] = {0};
int P[NMAX] = {0};
void price(const int N, long long M) {
auto [souvenirs, change] = transaction(M);
int sum = M-change;
for (int souvenir : souvenirs) count[souvenir]++;
while (souvenirs.size() > 1) {
if (isPriced[souvenirs.back()]) {
sum -= P[souvenirs.back()];
souvenirs.pop_back();
} else {
price(N, sum / souvenirs.size());
}
}
int top = souvenirs.front();
P[top] = sum;
isPriced[top] = true;
}
void buy_souvenirs(int N, long long P0) {
P[0] = P0;
isPriced[0] = true;
for (int i = 1; i < N; i++) {
if (!isPriced[i]) price(N, P[i-1]-1);
}
return;
}
| # | 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... | ||||
