Submission #1252409

#TimeUsernameProblemLanguageResultExecution timeMemory
1252409anfiSouvenirs (IOI25_souvenirs)C++20
0 / 100
12 ms412 KiB
#ifndef SOUVENIRS_H
#define SOUVENIRS_H
#include <vector>
using namespace std;

std::pair<std::vector<int>, long long> transaction(long long M);
#endif

//========================================================
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;

static const long long INF = 1e18;
static int N;
static long long P0, p[105];
static int cntTrans[105];

void buy_souvenirs(int n, long long P0_input) {
    N = n;
    P0 = P0_input;
    p[0] = P0;
    memset(cntTrans, 0, sizeof(cntTrans));

    for (int i = 1; i < N; ++i) {
        long long lo = 1;
        long long hi = p[i-1] - 1;
        while (lo < hi) {
            long long mid = lo + (hi - lo) / 2;
            auto [v, rem] = transaction(mid);
            bool sold_i = binary_search(v.begin(), v.end(), i);
            if (sold_i) {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }
        p[i] = lo;
    }

    for (int i = 1; i < N; ++i) {
        for (int t = 0; t < i; ++t) {
            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...