Submission #1321070

#TimeUsernameProblemLanguageResultExecution timeMemory
1321070sadixSouvenirs (IOI25_souvenirs)C++17
0 / 100
12 ms332 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <stdint.h>
#include <algorithm>

void buy_souvenirs(int N, long long P0) {
    for (int i = 1; i < N; i++) {

        long long L = 1, R = P0 - 1;
        long long goodM = -1;

        while (L <= R) {
            long long mid = (L + R) / 2;
            auto res = transaction(mid);

            bool has_i = false;
            bool has_smaller = false;

            for (int t : res.first) {
                if (t == i) has_i = true;
                if (t < i) has_smaller = true;
            }

            if (has_smaller) {
                R = mid - 1;
            } else if (!has_i) {
                L = mid + 1; 
            } else {
                goodM = mid;
                R = mid - 1;
            }
        }

        for (int k = 0; k < i; k++) {
            transaction(goodM);
        }
    }
}

#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...