#include "souvenirs.h"
#include <vector>
#include <algorithm>
#include <cctype>
using namespace std;
void buy_souvenirs(int N, long long P0) {
// Mảng lưu giá P[0..N-1]; P[0] đã biết
vector<long long> P(N);
P[0] = P0;
// Bước 1: Xác định P[1] đến P[N-1]
// Duyệt từ loại N-1 trở về loại 1
for (int i = N - 1; i >= 1; --i) {
// Thử M từ 1 đến P0 - 1
for (long long M = 1; M < P0; ++M) {
auto res = transaction(M);
const vector<int>& bought = res.first;
// Kiểm tra xem có mua được loại i không
if (!bought.empty() && bought[0] == i) {
// Vì xét từ loại 0 → N-1, và M < P[0],
// nên nếu mua được loại i, thì đây là loại đầu tiên (rẻ nhất) được mua
// → và vì M nhỏ nhất, nên M == P[i]
P[i] = M;
break;
}
// Nếu mua loại < i → nghĩa là P[i] > M → tiếp tục thử M lớn hơn
// Nếu mua loại > i → không thể xảy ra vì i là loại đang xét và P giảm dần
}
}
// Bước 2: Mua đúng số lượng: i món loại i (với i = 1..N-1)
for (int i = 1; i < N; ++i) {
for (int cnt = 0; cnt < i; ++cnt) {
// Gửi đúng P[i] xu → chỉ mua được 1 món loại 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... |