Submission #1254706

#TimeUsernameProblemLanguageResultExecution timeMemory
1254706YelarysSouvenirs (IOI25_souvenirs)C++20
0 / 100
8 ms412 KiB
#include <bits/stdc++.h>
using namespace std;

// Provided by grader
extern pair<vector<int>, long long> transaction(long long M);

void buy_souvenirs(int N, long long P0) {
    vector<long long> P(N);
    P[0] = P0;

    // Step 1: Find P[1..N-1]
    for (int i = 1; i < N; i++) {
        long long low = 1, high = P0 - 1, ans = -1;
        while (low <= high) {
            long long mid = (low + high) / 2;
            auto res = transaction(mid);
            bool got = false;
            for (int t : res.first) {
                if (t == i) got = true;
            }
            if (got) {
                ans = mid;
                high = mid - 1; // try smaller
            } else {
                low = mid + 1; // need more coins
            }
        }
        P[i] = ans;
    }

    // Step 2: Buy exactly i souvenirs of type i (Q[0] = 0)
    for (int i = 1; i < N; i++) {
        for (int k = 0; k < i; k++) {
            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...