Submission #1275978

#TimeUsernameProblemLanguageResultExecution timeMemory
1275978sphoabinh1980Souvenirs (IOI25_souvenirs)C++20
3 / 100
13 ms336 KiB
#include "souvenirs.h"
#include <vector>
using namespace std;

void buy_souvenirs(int N, long long P0) {
    vector<long long> P(N);
    vector<int> bought_count(N, 0); // Đếm số món đã mua (kể cả trong khám phá)
    P[0] = P0;

    // Bước 1: Khám phá P[1..N-1] và ĐỒNG THỜI đếm số món đã mua
    for (int i = N - 1; i >= 1; --i) {
        for (long long M = 1; M < P0; ++M) {
            auto res = transaction(M);
            const vector<int>& types = res.first;
            // Cập nhật số lượng đã mua
            for (int t : types) {
                bought_count[t]++;
            }
            // Kiểm tra xem loại i có được mua trong giao dịch này không
            bool bought_i = false;
            for (int t : types) {
                if (t == i) {
                    bought_i = true;
                    break;
                }
            }
            if (bought_i) {
                P[i] = M;
                break;
            }
        }
    }

    // Bước 2: Mua đủ số lượng còn thiếu
    for (int i = 1; i < N; ++i) {
        int need = i - bought_count[i]; // Cần mua thêm bao nhiêu
        for (int j = 0; j < need; ++j) {
            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...