제출 #1275977

#제출 시각아이디문제언어결과실행 시간메모리
1275977sphoabinh1980선물 (IOI25_souvenirs)C++20
0 / 100
13 ms332 KiB
#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 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...