제출 #1337803

#제출 시각아이디문제언어결과실행 시간메모리
1337803playeragp선물 (IOI25_souvenirs)C++20
0 / 100
13 ms412 KiB
#include <bits/stdc++.h>
using namespace std;

vector<long long> prices;
int totalTypes;

pair<vector<int>, long long> transaction(long long M);

void determinePrice(int index) {
    long long left = 1;
    long long right = prices[0] - 1;
    
    while (left <= right) {
        long long mid = (left + right) / 2;
        auto result = transaction(mid);
        
        bool buyIndex = false;
        for (int type : result.first) {
            if (type == index) {
                buyIndex = true;
                break;
            }
        }
        
        if (buyIndex) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    
    prices[index] = right + 1;
}

void buy_souvenirs(int N, long long P0) {
    totalTypes = N;
    prices.resize(N);
    prices[0] = P0;
    
    for (int i = 1; i < N; i++) {
        determinePrice(i);
    }
    
    vector<int> bought(N, 0);
    
    for (int i = 1; i < N; i++) {
        while (bought[i] < i) {
            auto result = transaction(prices[i]);
            for (int type : result.first) {
                bought[type]++;
            }
        }
    }
}
#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...